ROOT logo
//////////////////////////////////////////////////////////////////////////////
//
// $Id: $
//
//*-- Author  : RICH team member
//*-- Revised : Martin Jurkovic <martin.jurkovic@ph.tum.de> 2010
//
//_HADES_CLASS_DESCRIPTION
//////////////////////////////////////////////////////////////////////////////
//
//  HRichGeometryPar
//
//
//////////////////////////////////////////////////////////////////////////////


#ifndef HRICHGEOMETRYPAR_H
#define HRICHGEOMETRYPAR_H

#include "TArrayF.h"
#include "TArrayI.h"

#include "hparcond.h"
#include "hrichframe.h"
#include "hrichpad.h"
#include "hrichpadtab.h"
#include "hrichwiretab.h"

class HParamList;

class HRichGeometryPar : public HParCond {

private:

   Int_t   fSectorsNr;
   TArrayI fSectorActive;
   Int_t   fColumns;
   Int_t   fRows;
   Float_t fDistanceWiresPads;   // Distance between the wire and the padplane
   TArrayF fSectorPhi;
   Float_t fSectorShift; // this number corresponds to the shift in Y (lab coordinates)
   // of the Rich volume in HGeant. The factor fSectorShift/cos(20)
   // has to be added to the y coordinate in the detector ( pad plane)
   // reference system in order to get the correct pad number
   // and the correct theta. This correction takes place in the
   // hrichdigitizer class.

   HRichFrame     fFrame;
   HRichPadTab    fPads;
   HRichWireTab   fWires;

public:

   HRichGeometryPar(const Char_t* name    = "RichGeometryParameters",
                    const Char_t* title   = "Rich Geometry Parameters",
                    const Char_t* context = "RichGeometryParProduction");
   virtual ~HRichGeometryPar();

   Int_t incrementSectorNr();
   Int_t calcCol(Int_t padnr);
   Int_t calcRow(Int_t padnr);

   void   clear();
   void   initParameters();
   void   printParams();
   void   putParams(HParamList* l);
   Bool_t getParams(HParamList* l);


// Getters
   Int_t   getSectorsNr();
   Int_t   getColumns();
   Int_t   getRows();
   Int_t   getPadsNr();
   Int_t   getSectorActive(Int_t s);
   Int_t   getPadStatus(Int_t padnr);
   Float_t getSectorShift();
   Float_t getDistanceWiresPads();
   Float_t getSectorPhi(Int_t s);
   HRichFrame*   getFramePar();
   HRichWireTab* getWiresPar();
   HRichPadTab*  getPadsPar();


// Setters
   void setSectorActive(Int_t s, Int_t i);
   void setColumns(Int_t c);
   void setRows(Int_t r);
   void setSectorPhi(Int_t s, Float_t phi);
   void setSectorShift(Float_t shift);
   void setDistanceWiresPads(Float_t dis);

   ClassDef(HRichGeometryPar, 1) //Geometry parameters

};

/////////////////////////////////////////////

inline Int_t HRichGeometryPar::incrementSectorNr() {
      return ++fSectorsNr;
   }
inline Int_t HRichGeometryPar::calcCol(Int_t padnr) {
      return (padnr % fColumns);
   }
inline Int_t HRichGeometryPar::calcRow(Int_t padnr) {
      return (padnr / fColumns);
   }

// Getters
inline Int_t HRichGeometryPar::getSectorsNr() {
      return fSectorsNr;
   }
inline Int_t HRichGeometryPar::getColumns() {
      return fColumns;             // pads in X
   }
inline Int_t HRichGeometryPar::getRows() {
      return fRows;                // pads in Y
   }
inline Int_t HRichGeometryPar::getPadsNr() {
      return (fColumns * fRows);
   }
inline Int_t HRichGeometryPar::getSectorActive(Int_t s) {
      return (s >= 0 && s < 6) ? fSectorActive[s] : -1;
   }
inline Int_t HRichGeometryPar::getPadStatus(Int_t padnr) {
      return fPads.getPad(padnr)->getPadActive();
   }
inline Float_t HRichGeometryPar::getSectorShift() {
      return fSectorShift;
   }
inline Float_t HRichGeometryPar::getDistanceWiresPads() {
      return fDistanceWiresPads;
   }
inline Float_t HRichGeometryPar::getSectorPhi(Int_t s) {
      return (s >= 0 && s < 6) ? fSectorPhi[s] : -1;
   }
inline HRichFrame* HRichGeometryPar::getFramePar() {
      return &fFrame;
   }
inline HRichWireTab* HRichGeometryPar::getWiresPar() {
      return &fWires;
   }
inline HRichPadTab* HRichGeometryPar::getPadsPar()  {
      return &fPads;
   }


// Setters
inline void HRichGeometryPar::setSectorActive(Int_t s, Int_t i) {
      fSectorActive[s] = i;
   }
inline void HRichGeometryPar::setColumns(Int_t c) {
      fColumns = c;
   }
inline void HRichGeometryPar::setRows(Int_t r) {
      fRows = r;
   }
inline void HRichGeometryPar::setSectorPhi(Int_t s, Float_t phi) {
      fSectorPhi[s] = phi;
   }
inline void HRichGeometryPar::setSectorShift(Float_t shift) {
      fSectorShift = shift;
   }
inline void HRichGeometryPar::setDistanceWiresPads(Float_t dis) {
      fDistanceWiresPads = dis;
   }

#endif // HRICHGEOMETRYPAR_H
 hrichgeometrypar.h:1
 hrichgeometrypar.h:2
 hrichgeometrypar.h:3
 hrichgeometrypar.h:4
 hrichgeometrypar.h:5
 hrichgeometrypar.h:6
 hrichgeometrypar.h:7
 hrichgeometrypar.h:8
 hrichgeometrypar.h:9
 hrichgeometrypar.h:10
 hrichgeometrypar.h:11
 hrichgeometrypar.h:12
 hrichgeometrypar.h:13
 hrichgeometrypar.h:14
 hrichgeometrypar.h:15
 hrichgeometrypar.h:16
 hrichgeometrypar.h:17
 hrichgeometrypar.h:18
 hrichgeometrypar.h:19
 hrichgeometrypar.h:20
 hrichgeometrypar.h:21
 hrichgeometrypar.h:22
 hrichgeometrypar.h:23
 hrichgeometrypar.h:24
 hrichgeometrypar.h:25
 hrichgeometrypar.h:26
 hrichgeometrypar.h:27
 hrichgeometrypar.h:28
 hrichgeometrypar.h:29
 hrichgeometrypar.h:30
 hrichgeometrypar.h:31
 hrichgeometrypar.h:32
 hrichgeometrypar.h:33
 hrichgeometrypar.h:34
 hrichgeometrypar.h:35
 hrichgeometrypar.h:36
 hrichgeometrypar.h:37
 hrichgeometrypar.h:38
 hrichgeometrypar.h:39
 hrichgeometrypar.h:40
 hrichgeometrypar.h:41
 hrichgeometrypar.h:42
 hrichgeometrypar.h:43
 hrichgeometrypar.h:44
 hrichgeometrypar.h:45
 hrichgeometrypar.h:46
 hrichgeometrypar.h:47
 hrichgeometrypar.h:48
 hrichgeometrypar.h:49
 hrichgeometrypar.h:50
 hrichgeometrypar.h:51
 hrichgeometrypar.h:52
 hrichgeometrypar.h:53
 hrichgeometrypar.h:54
 hrichgeometrypar.h:55
 hrichgeometrypar.h:56
 hrichgeometrypar.h:57
 hrichgeometrypar.h:58
 hrichgeometrypar.h:59
 hrichgeometrypar.h:60
 hrichgeometrypar.h:61
 hrichgeometrypar.h:62
 hrichgeometrypar.h:63
 hrichgeometrypar.h:64
 hrichgeometrypar.h:65
 hrichgeometrypar.h:66
 hrichgeometrypar.h:67
 hrichgeometrypar.h:68
 hrichgeometrypar.h:69
 hrichgeometrypar.h:70
 hrichgeometrypar.h:71
 hrichgeometrypar.h:72
 hrichgeometrypar.h:73
 hrichgeometrypar.h:74
 hrichgeometrypar.h:75
 hrichgeometrypar.h:76
 hrichgeometrypar.h:77
 hrichgeometrypar.h:78
 hrichgeometrypar.h:79
 hrichgeometrypar.h:80
 hrichgeometrypar.h:81
 hrichgeometrypar.h:82
 hrichgeometrypar.h:83
 hrichgeometrypar.h:84
 hrichgeometrypar.h:85
 hrichgeometrypar.h:86
 hrichgeometrypar.h:87
 hrichgeometrypar.h:88
 hrichgeometrypar.h:89
 hrichgeometrypar.h:90
 hrichgeometrypar.h:91
 hrichgeometrypar.h:92
 hrichgeometrypar.h:93
 hrichgeometrypar.h:94
 hrichgeometrypar.h:95
 hrichgeometrypar.h:96
 hrichgeometrypar.h:97
 hrichgeometrypar.h:98
 hrichgeometrypar.h:99
 hrichgeometrypar.h:100
 hrichgeometrypar.h:101
 hrichgeometrypar.h:102
 hrichgeometrypar.h:103
 hrichgeometrypar.h:104
 hrichgeometrypar.h:105
 hrichgeometrypar.h:106
 hrichgeometrypar.h:107
 hrichgeometrypar.h:108
 hrichgeometrypar.h:109
 hrichgeometrypar.h:110
 hrichgeometrypar.h:111
 hrichgeometrypar.h:112
 hrichgeometrypar.h:113
 hrichgeometrypar.h:114
 hrichgeometrypar.h:115
 hrichgeometrypar.h:116
 hrichgeometrypar.h:117
 hrichgeometrypar.h:118
 hrichgeometrypar.h:119
 hrichgeometrypar.h:120
 hrichgeometrypar.h:121
 hrichgeometrypar.h:122
 hrichgeometrypar.h:123
 hrichgeometrypar.h:124
 hrichgeometrypar.h:125
 hrichgeometrypar.h:126
 hrichgeometrypar.h:127
 hrichgeometrypar.h:128
 hrichgeometrypar.h:129
 hrichgeometrypar.h:130
 hrichgeometrypar.h:131
 hrichgeometrypar.h:132
 hrichgeometrypar.h:133
 hrichgeometrypar.h:134
 hrichgeometrypar.h:135
 hrichgeometrypar.h:136
 hrichgeometrypar.h:137
 hrichgeometrypar.h:138
 hrichgeometrypar.h:139
 hrichgeometrypar.h:140
 hrichgeometrypar.h:141
 hrichgeometrypar.h:142
 hrichgeometrypar.h:143
 hrichgeometrypar.h:144
 hrichgeometrypar.h:145
 hrichgeometrypar.h:146
 hrichgeometrypar.h:147
 hrichgeometrypar.h:148
 hrichgeometrypar.h:149
 hrichgeometrypar.h:150
 hrichgeometrypar.h:151
 hrichgeometrypar.h:152
 hrichgeometrypar.h:153
 hrichgeometrypar.h:154
 hrichgeometrypar.h:155
 hrichgeometrypar.h:156
 hrichgeometrypar.h:157
 hrichgeometrypar.h:158
 hrichgeometrypar.h:159
 hrichgeometrypar.h:160
 hrichgeometrypar.h:161
 hrichgeometrypar.h:162
 hrichgeometrypar.h:163
 hrichgeometrypar.h:164
 hrichgeometrypar.h:165
 hrichgeometrypar.h:166
 hrichgeometrypar.h:167
 hrichgeometrypar.h:168