00001 #ifndef St_tpcPadPlanesC_h
00002 #define St_tpcPadPlanesC_h
00003
00004 #include "TChair.h"
00005 #include "tables/St_tpcPadPlanes_Table.h"
00006
00007 class St_tpcPadPlanesC : public TChair {
00008 public:
00009 static St_tpcPadPlanesC* instance();
00010 tpcPadPlanes_st *Struct(Int_t i = 0) {return ((St_tpcPadPlanes*) Table())->GetTable()+i;}
00011 UInt_t getNumRows() {return GetNRows();}
00012 Int_t padRows(Int_t i = 0) {return Struct(i)->padRows;}
00013 Int_t innerPadRows(Int_t i = 0) {return Struct(i)->innerPadRows;}
00014 Int_t innerPadRows48(Int_t i = 0) {return Struct(i)->innerPadRows48;}
00015 Int_t innerPadRows52(Int_t i = 0) {return Struct(i)->innerPadRows52;}
00016 Int_t outerPadRows(Int_t i = 0) {return Struct(i)->outerPadRows;}
00017 Int_t superInnerPadRows(Int_t i = 0) {return Struct(i)->superInnerPadRows;}
00018 Int_t superOuterPadRows(Int_t i = 0) {return Struct(i)->superOuterPadRows;}
00019 Double_t innerSectorPadWidth(Int_t i = 0) {return Struct(i)->innerSectorPadWidth;}
00020 Double_t innerSectorPadLength(Int_t i = 0){return Struct(i)->innerSectorPadLength;}
00021 Double_t innerSectorPadPitch(Int_t i = 0) {return Struct(i)->innerSectorPadPitch;}
00022 Double_t innerSectorRowPitch1(Int_t i = 0){return Struct(i)->innerSectorRowPitch1;}
00023 Double_t innerSectorRowPitch2(Int_t i = 0){return Struct(i)->innerSectorRowPitch2;}
00024 Double_t firstPadRow(Int_t i = 0) {return Struct(i)->firstPadRow;}
00025 Double_t firstOuterSectorPadRow(Int_t i=0){return Struct(i)->firstOuterSectorPadRow;}
00026 Double_t lastOuterSectorPadRow(Int_t i =0){return Struct(i)->lastOuterSectorPadRow;}
00027 Double_t firstRowWidth(Int_t i = 0) {return Struct(i)->firstRowWidth;}
00028 Double_t lastRowWidth(Int_t i = 0) {return Struct(i)->lastRowWidth;}
00029 Double_t outerSectorPadWidth(Int_t i = 0) {return Struct(i)->outerSectorPadWidth;}
00030 Double_t outerSectorPadLength(Int_t i = 0){return Struct(i)->outerSectorPadLength;}
00031 Double_t outerSectorPadPitch(Int_t i = 0) {return Struct(i)->outerSectorPadPitch;}
00032 Double_t outerSectorRowPitch(Int_t i = 0) {return Struct(i)->outerSectorRowPitch;}
00033 Double_t outerSectorLength(Int_t i = 0) {return Struct(i)->outerSectorLength;}
00034 Double_t ioSectorSeparation(Int_t i = 0) {return Struct(i)->ioSectorSeparation;}
00035 Double_t innerSectorEdge(Int_t i = 0) {return Struct(i)->innerSectorEdge;}
00036 Double_t outerSectorEdge(Int_t i = 0) {return Struct(i)->outerSectorEdge;}
00037 Double_t innerSectorPadPlaneZ(Int_t i = 0){return Struct(i)->innerSectorPadPlaneZ;}
00038 Double_t outerSectorPadPlaneZ(Int_t i = 0){return Struct(i)->outerSectorPadPlaneZ;}
00039 Int_t* innerPadsPerRow(Int_t i = 0) {return Struct(i)->innerPadsPerRow;}
00040 Int_t* outerPadsPerRow(Int_t i = 0) {return Struct(i)->outerPadsPerRow;}
00041 Int_t padsPerRow(Int_t row = 1) {return (row <= innerPadRows()) ?
00042 innerPadsPerRow()[row-1] :
00043 outerPadsPerRow()[row-1-innerPadRows()];}
00044 Double_t* innerRowRadii(Int_t i = 0) {return Struct(i)->innerRowRadii;}
00045 Double_t* outerRowRadii(Int_t i = 0) {return Struct(i)->outerRowRadii;}
00046
00047 Int_t numberOfRows() {return padRows();}
00048 Int_t numberOfInnerRows() {return innerPadRows();}
00049 Int_t numberOfInnerRows48() {return innerPadRows48();}
00050 Int_t numberOfInnerRows52() {return innerPadRows52();}
00051 Int_t numberOfOuterRows() {return outerPadRows();}
00052 Bool_t isRowInRange(Int_t row) {return (row >= 1 && row<=numberOfRows()) ? kTRUE: kFALSE;}
00053 Double_t radialDistanceAtRow(Int_t row) {
00054 if (! isRowInRange(row)) return 0;
00055 if ( row<=numberOfInnerRows() ) return innerRowRadii()[row-1];
00056 else return outerRowRadii()[row-1-numberOfInnerRows()];
00057 }
00058 Int_t numberOfPadsAtRow(Int_t row) {
00059 if (! isRowInRange(row)) return 0;
00060 if ( row<=numberOfInnerRows() ) return innerPadsPerRow()[row-1];
00061 return outerPadsPerRow()[row-1-numberOfInnerRows()];
00062 }
00063 Double_t PadWidthAtRow(Int_t row) {
00064 if (! isRowInRange(row)) return 0;
00065 if ( row<=numberOfInnerRows()) return innerSectorPadWidth();
00066 return outerSectorPadWidth();
00067 }
00068 Double_t PadLengthAtRow(Int_t row) {
00069 if (! isRowInRange(row)) return 0;
00070 if ( row<=numberOfInnerRows()) return innerSectorPadLength();
00071 return outerSectorPadLength();
00072 }
00073 Double_t PadPitchAtRow(Int_t row) {
00074 if (! isRowInRange(row)) return 0;
00075 if ( row<=numberOfInnerRows()) return innerSectorPadPitch();
00076 return outerSectorPadPitch();
00077 }
00078 Double_t RowPitchAtRow(Int_t row) {
00079 if (! isRowInRange(row)) return 0;
00080 if ( row<=numberOfInnerRows48() ) return innerSectorRowPitch1();
00081 else if (row>numberOfInnerRows48()&&row<=numberOfInnerRows()) return innerSectorRowPitch2();
00082 return outerSectorRowPitch();
00083 }
00084 Int_t indexForRowPad(Int_t row, Int_t pad) {
00085 if (pad >numberOfPadsAtRow(row)) return -1;
00086 Int_t index = 0;
00087 if (row>0 && row<=numberOfInnerRows() ) for (Int_t i=1;i<row;i++) index += numberOfPadsAtRow(i);
00088 else
00089 if (row>numberOfInnerRows()&&row<=numberOfRows()) for (Int_t i=numberOfInnerRows()+1;i<row;i++) index += numberOfPadsAtRow(i);
00090 index+=pad-1;
00091 return index;
00092 }
00093 protected:
00094 St_tpcPadPlanesC(St_tpcPadPlanes *table=0) : TChair(table) {}
00095 virtual ~St_tpcPadPlanesC() {fgInstance = 0;}
00096 private:
00097 static St_tpcPadPlanesC* fgInstance;
00098 ClassDefChair(St_tpcPadPlanes, tpcPadPlanes_st )
00099 ClassDef(St_tpcPadPlanesC,1)
00100 };
00101 #endif