00001
00002
00003
00004
00005
00006
00007
00009 #ifndef ALTDEMUXCALC_H
00010 #define ALTDEMUXCALC_H
00011
00012 #include "TObject.h"
00013 #include "Plex/PlexSEIdAltL.h"
00014 #include "UgliGeometry/UgliGeomHandle.h"
00015 #include "UgliGeometry/UgliStripHandle.h"
00016 #include "AltDeMuxStructures.h"
00017
00018
00019
00020 class AltDeMuxCalc : public TObject
00021 {
00022
00023 public:
00024 AltDeMuxCalc();
00025 ~AltDeMuxCalc();
00026 void SetClearFibreC(Float_t c){fClearFibreC=c;};
00027 void SetWLSFibreC(Float_t c){fWLSFibreC=c;};
00028 void SetScintillatorC(Float_t c){fScintillatorC=c;fDt2Dstrip=fScintillatorC/2.0/0.042;};
00029 void SetNumberOfStrips(Int_t n){fNumberOfStrips=n;};
00030 void SetFibreLengthE(Int_t iplane, PlexSEIdAltL* paltlist);
00031 void SetFibreLengthW(Int_t iplane, PlexSEIdAltL* paltlist);
00032 void SetUgli(UgliGeomHandle* p){pUgh=p;};
00033 void SetPlane(Int_t iplane){fPlane = iplane;};
00034 void SetView(PlaneView::PlaneView_t view){fView=view ;};
00035 void SetEast(PlexSEIdAltL* pListE, Int_t stripE);
00036 void SetWest(PlexSEIdAltL* pListW, Int_t stripW);
00037 void SetEastToStrip(PlexSEIdAltL* pListE, Int_t stripE);
00038 void SetWestToStrip(PlexSEIdAltL* pListW, Int_t stripW);
00039 void SetAbsTime(Double_t absTime){fAbsTime = absTime;};
00040 Double_t GetAbsTime(){return fAbsTime;};
00041 void CalcEastWest();
00042 void CalcEast();
00043 void CalcWest();
00044 void CalcBestEastWest();
00045 void CalcBestEast();
00046 void CalcBestWest();
00047 void CalcDt();
00048 Int_t StripAim();
00049 Float_t CurrentQ(PlexSEIdAltL* pAltList);
00050 Float_t AttCorWLS(Float_t lWlsInMetres);
00051 Float_t AttCorClear(Float_t lClearInMetres);
00052 Float_t SigmaDQ();
00053 Float_t QRawE(){return fQE;};
00054 Float_t QRawW(){return fQW;};
00055 Float_t QSigCorE(){return fQEc;};
00056 Float_t QSigCorW(){return fQWc;};
00057 Float_t QAttCorE(){return fQAttCorE;};
00058 Float_t QAttCorW(){return fQAttCorW;};
00059 Float_t PairQCor(){return fQWc+fQEc;}
00060 Float_t GetClearE(){return fClearE;}
00061 Float_t GetClearW(){return fClearW;}
00062 Float_t GetWlsE(){return fWlsE;}
00063 Float_t GetWlsW(){return fWlsW;}
00064 Double_t GetTE(){return fTE;}
00065 Double_t GetTW(){return fTW;}
00066 Float_t DT(){return fDt;}
00067 Float_t TimeWalk(float adc);
00068 void FindNearestEdge(Float_t x, Float_t y, Int_t &iedge, Float_t &d);
00069
00070 private:
00071
00072 UgliGeomHandle* pUgh;
00073 Int_t fPlane;
00074 PlaneView::PlaneView_t fView;
00075 PlexSEIdAltL* pAltListE;
00076 PlexSEIdAltL* pAltListW;
00077 Double_t fAbsTime;
00078 bool fEastIsSet;
00079 bool fWestIsSet;
00080 bool fDtIsSet;
00081 bool fDQIsSet;
00082
00083 Int_t fStripE;
00084 Int_t fStripW;
00085 Float_t fQE;
00086 Float_t fQW;
00087 Float_t fQEc;
00088 Float_t fQWc;
00089 Float_t fQAttCorE;
00090 Float_t fQAttCorW;
00091 Float_t fClearE;
00092 Float_t fClearW;
00093 Float_t fWlsE;
00094 Float_t fWlsW;
00095 Double_t fTE;
00096 Double_t fTW;
00097 Double_t fDt;
00098 Float_t fDQ;
00099 Int_t fStripAim;
00100 Float_t fQEcor;
00101 Float_t fQWcor;
00102 Float_t fClearFibreC;
00103 Float_t fWLSFibreC;
00104 Float_t fScintillatorC;
00105 Float_t fDt2Dstrip;
00106
00107 Int_t fNumberOfStrips;
00108
00109
00110
00111 Float_t fWLSFibreLengthE[MAX_NUMBER_OF_PLANES][MAX_NUMBER_OF_STRIPS];
00112 Float_t fWLSFibreLengthW[MAX_NUMBER_OF_PLANES][MAX_NUMBER_OF_STRIPS];
00113 Float_t fClearFibreLengthE[MAX_NUMBER_OF_PLANES][MAX_NUMBER_OF_STRIPS];
00114 Float_t fClearFibreLengthW[MAX_NUMBER_OF_PLANES][MAX_NUMBER_OF_STRIPS];
00115
00116 Float_t fAttCorWLS[2500];
00117 Float_t fAttCorClear[2500];
00118
00119 ClassDef(AltDeMuxCalc, 0);
00120 };
00121
00122 #endif // ALTDEMUXCALC_H
00123