Line data Source code
1 : #ifndef ALITPCCALIBKR_H
2 : #define ALITPCCALIBKR_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 : * See cxx source for full Copyright notice */
5 :
6 : #include <TObject.h>
7 : #include <TObjArray.h>
8 : #include <TChain.h>
9 : #include <TTree.h>
10 : #include <TClonesArray.h>
11 :
12 : #include "AliTPCclusterKr.h"
13 :
14 : class TH3F;
15 : class TH1D;
16 :
17 : class AliTPCCalibKr : public TObject {
18 :
19 : public:
20 : AliTPCCalibKr();
21 : AliTPCCalibKr(const AliTPCCalibKr&); // copy constructor
22 : virtual ~AliTPCCalibKr();
23 :
24 : AliTPCCalibKr& operator=(const AliTPCCalibKr&);
25 :
26 : //
27 : void Init();
28 : Bool_t Process(AliTPCclusterKr *cluster);
29 : Bool_t Accept(AliTPCclusterKr *cluster);
30 : Bool_t Update(AliTPCclusterKr *cluster);
31 : TH3F* CreateHisto(Int_t chamber);
32 :
33 0 : const TObjArray* GetHistoKrArray () {return &fHistoKrArray;} // get calibration object
34 : TH3F* GetHistoKr(Int_t sector) const; // get refernce histogram
35 :
36 : Bool_t IsCSide(Int_t chamber);
37 : Bool_t IsIROC(Int_t chamber);
38 :
39 : void Analyse();
40 : static TH1D* ProjectHisto(TH3F* histo3D, const char* name = "_pz", Int_t firstxbin = 0, Int_t lastxbin = 0, Int_t firstybin = 0, Int_t lastybin = 0);
41 :
42 0 : void SetASide(Bool_t bA = kTRUE) {fASide = bA;} // fill histo only A TPC side
43 0 : void SetBSide(Bool_t bC = kTRUE) {fCSide = bC;} // fill histo only C TPC side
44 :
45 : //Merge output objects (needed by PROOF)
46 : virtual Long64_t Merge(TCollection* list);
47 :
48 : // Setters
49 0 : void SetADCOverClustSizeRange(Float_t min=0.0,Float_t max=1.0e9) {fADCOverClustSizeMin = min ; fADCOverClustSizeMax = max; }
50 0 : void SetMaxADCOverClustADCRange(Float_t min=0.0,Float_t max=1.0e9) {fMaxADCOverClustADCMin = min ; fMaxADCOverClustADCMax = max; }
51 0 : void SetTimeRange(Float_t min=0.0, Float_t max=1.0e9) {fTimeMin = min ; fTimeMax = max; }
52 0 : void SetClustSizeRange(Float_t min=0.0, Float_t max=1.0e9) {fClustSizeMin = min ; fClustSizeMax = max; }
53 :
54 0 : void SetTimebinRmsMin(Float_t iroc=0.0,Float_t oroc=0.0) {fTimebinRmsIrocMin = iroc ; fTimebinRmsOrocMin = oroc; }
55 0 : void SetPadRmsMin(Float_t iroc=0.0,Float_t oroc=0.0) {fPadRmsIrocMin = iroc ; fPadRmsOrocMin = oroc; }
56 0 : void SetRowRmsMin(Float_t iroc=0.0,Float_t oroc=0.0) {fRowRmsIrocMin = iroc ; fRowRmsOrocMin = oroc; }
57 0 : void SetClusterPadSize1DMax(Short_t iroc=200,Short_t oroc=200) {fClusterPadSize1DIrocMax = iroc ; fClusterPadSize1DOrocMax = oroc; }
58 0 : void SetCurveCoefficient(Float_t iroc=1.0e9,Float_t oroc=1.0e9) {fCurveCoefficientIroc = iroc ; fCurveCoefficientOroc = oroc; }
59 :
60 0 : void SetIrocHistogram(Int_t nbins=200,Float_t min=100,Float_t max=6000) {fIrocHistogramNbins = nbins ; fIrocHistogramMin = min ; fIrocHistogramMax = max; }
61 0 : void SetOrocHistogram(Int_t nbins=200,Float_t min=100,Float_t max=5500) {fOrocHistogramNbins = nbins ; fOrocHistogramMin = min ; fOrocHistogramMax = max; }
62 :
63 0 : void SetRadius(UInt_t row=0, UInt_t pad=0) {fRowRadius = row ; fPadRadius = pad; }
64 0 : void SetStep(UInt_t row=1, UInt_t pad=1) {fRowStep = (row>=1?row:1) ; fPadStep = (pad>=1?pad:1) ; }
65 :
66 : private:
67 :
68 : Bool_t fASide; //! Only A side
69 : Bool_t fCSide; //! Only C side
70 : TObjArray fHistoKrArray; // Calibration histograms for Kr distribution
71 :
72 : Float_t fADCOverClustSizeMin; // min ADCcluster over Cluster size ratio
73 : Float_t fADCOverClustSizeMax; // max ADCcluster over Cluster size ratio
74 : Float_t fMaxADCOverClustADCMin; // min MaxADC over ADCcluster ratio
75 : Float_t fMaxADCOverClustADCMax; // max MaxADC over ADCcluster ratio
76 : Float_t fTimeMin; // min time bin for MaxADC
77 : Float_t fTimeMax; // max time bin for MaxADC
78 : Float_t fClustSizeMin; // min cluster size
79 : Float_t fClustSizeMax; // max cluster size
80 :
81 : Float_t fTimebinRmsIrocMin; // min Timebin RMS for IROCs
82 : Float_t fPadRmsIrocMin; // min Pad RMS for IROCs
83 : Float_t fRowRmsIrocMin; // min Row RMS for IROCs
84 : Short_t fClusterPadSize1DIrocMax; // max size of cluster in pad dir. for IROCs
85 : Float_t fCurveCoefficientIroc; // A coefficient in curve function for IROCs
86 :
87 : Float_t fTimebinRmsOrocMin; // min Timebin RMS for OROCs
88 : Float_t fPadRmsOrocMin; // min Pad RMS for OROCs
89 : Float_t fRowRmsOrocMin; // min Row RMS for OROCs
90 : Short_t fClusterPadSize1DOrocMax; // max size of cluster in pad dir. for OROCs
91 : Float_t fCurveCoefficientOroc; // A coefficient in curve function for OROCs
92 :
93 : Float_t fIrocHistogramMin; // minimal range of histogram for IROCs
94 : Float_t fIrocHistogramMax; // maximal range of histogram for IROCs
95 : Int_t fIrocHistogramNbins; // number of bins in IROC histogram
96 : Float_t fOrocHistogramMin; // minimal range of histogram for OROCs
97 : Float_t fOrocHistogramMax; // maximal range of histogram for OROCs
98 : Int_t fOrocHistogramNbins; // number of bins in OROC histogram
99 :
100 : UInt_t fRowRadius; // window size around pad +/-; set to 0 for pad-by-pad calib
101 : UInt_t fPadRadius; // window size around pad +/-; set to 0 for pad-by-pad calib
102 : UInt_t fRowStep; // step size; set to 1 for finest granularity
103 : UInt_t fPadStep; // step size; set to 1 for finest granularity
104 :
105 :
106 :
107 : public:
108 6 : ClassDef(AliTPCCalibKr, 4) // Implementation of the TPC krypton calibration
109 : };
110 :
111 : #endif
112 :
|