]>
Commit | Line | Data |
---|---|---|
348f80b7 | 1 | #ifndef ALIITSONLINESDDINJECTORS_H |
2 | #define ALIITSONLINESDDINJECTORS_H | |
3 | ||
4 | ||
5 | /////////////////////////////////////////////////////////////////// | |
6 | // // | |
7 | // Class used for SDD injector analysis // | |
8 | // Origin: F.Prino, Torino, prino@to.infn.it // | |
9 | // // | |
10 | /////////////////////////////////////////////////////////////////// | |
0e5e647a | 11 | #include "AliITSOnlineSDD.h" |
348f80b7 | 12 | |
4ff6aa93 | 13 | /* $Id: */ |
348f80b7 | 14 | class TH2F; |
15 | class TGraphErrors; | |
16 | class AliITSOnlineSDDInjectors : public AliITSOnlineSDD { | |
17 | ||
18 | public: | |
19 | AliITSOnlineSDDInjectors(); | |
20 | AliITSOnlineSDDInjectors(Int_t mod, Int_t sid); | |
21 | virtual ~AliITSOnlineSDDInjectors(); | |
22 | ||
23 | void SetSide(Int_t sid){fSide=sid;} | |
24 | void SetThreshold(Float_t thr=75.){fThreshold=thr;} | |
25 | void SetRangeLine1(Int_t tbmin=40, Int_t tbmax=90){ | |
26 | fTbMin[0]=tbmin; fTbMax[0]=tbmax; | |
27 | } | |
28 | void SetRangeLine2(Int_t tbmin=90, Int_t tbmax=140){ | |
29 | fTbMin[1]=tbmin; fTbMax[1]=tbmax; | |
30 | } | |
31 | void SetRangeLine3(Int_t tbmin=170, Int_t tbmax=220){ | |
32 | fTbMin[2]=tbmin; fTbMax[2]=tbmax; | |
33 | } | |
34 | void SetPolOrder(Int_t n=3){fPolOrder=n;} | |
35 | void SetMinDriftVel(Float_t vmin=4.){fMinDriftVel=vmin;} | |
36 | void SetMaxDriftVel(Float_t vmax=9.){fMaxDriftVel=vmax;} | |
4ff6aa93 | 37 | void SetTimeDiffTB(Float_t tbDiff=8.){fTimeDiffTB=tbDiff;} |
348f80b7 | 38 | |
4ff6aa93 | 39 | TGraphErrors* GetLineGraph(Int_t jlin) const; |
beb262b4 | 40 | TGraphErrors* GetDriftVelocityGraph() const; |
348f80b7 | 41 | Float_t* GetDriftVelFitParam()const{ return fParam;} |
42 | Float_t GetDriftVelocity(Int_t jlin) const{return fDriftVel[jlin];} | |
43 | Float_t GetSigmaDriftVelocity(Int_t jlin) const{return fSigmaDriftVel[jlin];} | |
44 | Float_t GetTimeBinZero() const{return fTbZero;} | |
45 | Float_t GetDriftCoordinate(Float_t cAnode, Float_t cTimeBin); | |
beb262b4 | 46 | Int_t GetAnodeNumber(Int_t iInjLine) const; |
c668f182 | 47 | Float_t GetCentroid(Int_t injnumb, Int_t injline) const { |
48 | if(injnumb<kNInjectors && injline<3) return fCentroid[injnumb][injline]; | |
49 | else return -9999.; | |
50 | } | |
51 | Bool_t IsInjectorGood(Int_t injnumb, Int_t injline) const { | |
52 | if(injnumb<kNInjectors && injline<3) return fGoodInj[injnumb][injline]; | |
53 | else return 0; | |
54 | } | |
348f80b7 | 55 | void PrintInjMap(); |
56 | void PrintCentroids(); | |
4c82df4c | 57 | void WriteToASCII(Int_t evNumb, UInt_t timeStamp, Int_t optAppend=0); |
348f80b7 | 58 | |
59 | void Reset(); | |
60 | void AnalyzeEvent(TH2F* his); | |
61 | void FindGoodInjectors(); | |
62 | void FindCentroids(); | |
63 | void CalcDriftVelocity(Int_t jlin); | |
64 | void CalcTimeBinZero(); | |
65 | void FitDriftVelocityVsAnode(); | |
66 | ||
67 | protected: | |
68 | void SetPositions(); | |
69 | private: | |
70 | ||
71 | enum { | |
72 | kNInjectors = 33 | |
73 | }; | |
74 | ||
75 | AliITSOnlineSDDInjectors(const AliITSOnlineSDDInjectors& source); | |
76 | AliITSOnlineSDDInjectors& operator = (const AliITSOnlineSDDInjectors& source); | |
4ff6aa93 | 77 | static const Float_t fgkSaturation; // ADC saturation value (1008) |
348f80b7 | 78 | |
beb262b4 | 79 | TH2F* fHisto; // histogram of module channel counts |
80 | Float_t fTbZero; // Time zero for injector event | |
81 | Float_t fPosition[3]; // Coordinates of injector lines | |
82 | UShort_t fTbMin[3]; // Minimum time bin for each line | |
83 | UShort_t fTbMax[3]; // Maximum time bin for each line | |
84 | Bool_t fGoodInj[kNInjectors][3]; // array of good injectors | |
85 | Float_t fCentroid[kNInjectors][3]; // array of time centroids of injectors | |
86 | Float_t fRMSCentroid[kNInjectors][3]; // array of time rms of injectors | |
87 | Float_t fDriftVel[kNInjectors]; // drift velocity | |
88 | Float_t fSigmaDriftVel[kNInjectors]; // error on drift velocity | |
89 | Float_t *fParam; // parameters of polinomial fit | |
90 | // of drift vel. vs. anode number | |
91 | Int_t fPolOrder; // order of polinomial fit | |
92 | Float_t fMinDriftVel; // Cut value for minimum drift speed | |
93 | Float_t fMaxDriftVel; // Cut value for maximum drift speed | |
94 | Float_t fThreshold; // Threshold for injector signal | |
348f80b7 | 95 | |
4ff6aa93 | 96 | Float_t fTimeDiffTB; // time difference (in TB) between injector trigger and particle trigger |
97 | ||
98 | ClassDef(AliITSOnlineSDDInjectors,2) | |
348f80b7 | 99 | }; |
100 | #endif |