]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSOnlineSDDInjectors.h
### files: AliTPCTempMap.h (.cxx)
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSDDInjectors.h
1 #ifndef ALIITSONLINESDDINJECTORS_H
2 #define ALIITSONLINESDDINJECTORS_H
3
4
5 /* $Id$ */
6
7 ///////////////////////////////////////////////////////////////////
8 //                                                               //
9 // Class used for SDD injector analysis                           //
10 // Origin: F.Prino, Torino, prino@to.infn.it                     //
11 //                                                               //
12 ///////////////////////////////////////////////////////////////////
13
14 #include "AliITSOnlineSDD.h"
15
16
17 class TH2F;
18 class TGraphErrors;
19 class AliITSOnlineSDDInjectors : public AliITSOnlineSDD {
20
21  public:
22   AliITSOnlineSDDInjectors();      
23   AliITSOnlineSDDInjectors(Int_t nddl, Int_t ncarlos, Int_t sid);
24   virtual ~AliITSOnlineSDDInjectors();
25
26   void SetThresholds(Float_t tl, Float_t th){
27     fLowThreshold=tl;
28     fHighThreshold=th;
29   }
30   void SetInjLineRange(Int_t jlin, Int_t tbmin, Int_t tbmax){
31     fTbMin[jlin]=tbmin;
32     fTbMax[jlin]=tbmax;
33   }
34   void SetPolOrder(Int_t n){fPolOrder=n;}
35   void SetMinDriftSpeed(Float_t vmin){fMinDriftSpeed=vmin;}
36   void SetMaxDriftSpeed(Float_t vmax){fMaxDriftSpeed=vmax;}
37   void SetMaxDriftSpeedErr(Float_t maxval){
38     fMaxDriftSpeedErr=maxval;
39   }
40   void SetFitLimits(Int_t firstpad,Int_t lastpad){
41     fFirstPadForFit=firstpad;
42     fLastPadForFit=lastpad;
43   }
44   void SetPadStatusCutForFit(Int_t cutval=1){
45     fPadStatusCutForFit=cutval;
46   }
47   void SetDefaults();
48   void SetTimeStep(Float_t tstep) {
49     fTimeStep=tstep;
50   }
51   void SetUseTimeZeroSignal(Bool_t useTZ=kTRUE){
52     fUseTimeZeroSignal=useTZ;
53   }
54   TGraphErrors* GetTimeVsDistGraph(Int_t jpad) const;
55   TGraphErrors* GetDriftSpeedGraph() const;
56   TGraphErrors* GetSelectedDriftSpeedGraph(Int_t minAcceptStatus) const;
57   Float_t* GetDriftSpeedFitParam()const{ return fParam;}
58   Float_t GetDriftSpeed(Int_t jpad) const{return fDriftSpeed[jpad];}
59   Float_t GetDriftSpeedErr(Int_t jpad) const{return fDriftSpeedErr[jpad];}
60   Float_t GetTimeBinZero() const{return fTbZero;}
61
62   Float_t GetTimeStep() const{return fTimeStep;}
63   Int_t GetAnodeNumber(Int_t iInjPad) const;
64   Int_t GetInjPadNumberFromAnode(Int_t nAnode) const;
65   Int_t GetInjPadStatus(Int_t jpad) const;  
66   Int_t GetAnodeStatus(Int_t nAnode) const{
67     Int_t jpad=GetInjPadNumberFromAnode(nAnode);
68     return GetInjPadStatus(jpad);
69   }  
70   Float_t GetCentroid(Int_t jpad, Int_t jlin) const {
71     if(jpad<kInjPads && jlin<kInjLines) return fCentroid[jpad][jlin];
72     else return -9999.;
73   }
74   Bool_t IsInjectorGood(Int_t jpad, Int_t jlin) const {
75     if(jpad<kInjPads && jlin<kInjLines) return fGoodInj[jpad][jlin];
76     else return 0;
77   }
78   void PrintInjectorStatus();
79   void PrintCentroids();
80   void WriteToASCII(Int_t evNumb, UInt_t timeStamp, Int_t optAppend=0);
81
82   void Reset();      
83   void AnalyzeEvent(TH2F* his);      
84   void FindGoodInjectors();
85   void FindCentroids();
86   void CalcDriftSpeed(Int_t jpad);
87   void CalcTimeBinZero();
88   void FitDriftSpeedVsAnode();
89
90  protected:
91   void SetPositions();
92  private:
93
94   enum {kInjPads  = 33};
95   enum {kInjLines = 3};
96
97   AliITSOnlineSDDInjectors(const AliITSOnlineSDDInjectors& source);
98   AliITSOnlineSDDInjectors& operator = (const AliITSOnlineSDDInjectors& source);
99   static const Float_t fgkSaturation;        // ADC saturation value (1008)
100   static const Float_t fgkDefaultLThreshold;  // Default for fLowThreshold
101   static const Float_t fgkDefaultHThreshold;  // Default for fHighThreshold
102   static const Float_t fgkDefaultMinSpeed;   // Default for fMinDriftSpeed
103   static const Float_t fgkDefaultMaxSpeed;   // Default for fMaxDriftSpeed
104   static const Float_t fgkDefaultMaxErr;     // Default for fMaxDriftSpeedErr
105   static const Int_t   fgkDefaultPolOrder;   // Default for fPolOrder
106   static const Float_t fgkDefaultTimeStep;   // Default for fTimeStep
107   static const UShort_t   fgkDefaultTbMin[kInjLines];  // Defaults for fTbMin
108   static const UShort_t   fgkDefaultTbMax[kInjLines];  // Defaults for fTbMax
109
110
111   TH2F* fHisto;                              // histogram of channel counts
112   Float_t fTbZero;                           // Time zero for injector event
113   Float_t fRMSTbZero;                        // Error on time zero 
114   Float_t fPosition[kInjLines];              // Coordinates of injector lines
115   UShort_t fTbMin[kInjLines];                // Minimum time bin for each line
116   UShort_t fTbMax[kInjLines];                // Maximum time bin for each line
117   Bool_t fGoodInj[kInjPads][kInjLines];      // array of good injectors
118   Float_t fCentroid[kInjPads][kInjLines];    // array of time bin centroids
119   Float_t fRMSCentroid[kInjPads][kInjLines]; // array of time rms of injectors
120   Float_t fDriftSpeed[kInjPads];             // drift speed
121   Float_t fDriftSpeedErr[kInjPads];          // error on drift speed
122   Float_t *fParam;                           // parameters of polinomial fit to
123                                              // drift speed vs. anode number
124   Int_t fPolOrder;                   // order of polinomial fit
125   Float_t fMinDriftSpeed;            // Minimum value for drift speed
126   Float_t fMaxDriftSpeed;            // Maximum value for drift speed
127   Float_t fMaxDriftSpeedErr;         // Maximum value for error on drift speed
128   Float_t fLowThreshold;             // Low threshold for injector signal
129   Float_t fHighThreshold;            // High threshold for injector signal
130
131   Int_t fFirstPadForFit;             // first injector pad used in fit
132   Int_t fLastPadForFit;              // last injector pad used in fit
133   Int_t fPadStatusCutForFit;         // minimum value of pad status for fit
134
135   Float_t fTimeStep;                 // time bin value (25 or 50 ns)
136   Bool_t fUseTimeZeroSignal;         // flag for usage of time zero signal
137                                      // in drift speed calculation
138
139   ClassDef(AliITSOnlineSDDInjectors,5)
140 };
141 #endif