]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FORWARD/analysis/AliFMDAnaParameters.h
- see previous commit
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis / AliFMDAnaParameters.h
1 #ifndef ALIFMDANAPARAMETERS_H
2 #define ALIFMDANAPARAMETERS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * Latest changes by Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
7  *
8  * See cxx source for full Copyright notice                               
9  */
10 //
11 //The design of this class is based on the AliFMDParameters class. Its purpose
12 //is to hold parameters for the analysis such as background correction and 
13 //fit functions.
14 //
15 //Author: Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
16 //
17 //____________________________________________________________________
18
19 #ifndef ROOT_TNamed
20 # include <TNamed.h>
21 #endif
22 #ifndef ROOT_TArrayI
23 # include <TArrayI.h>
24 #endif
25 #ifndef ALIFMDUSHORTMAP_H
26 # include <AliFMDUShortMap.h>
27 #endif
28 #ifndef ALIFMDBOOLMAP_H
29 # include <AliFMDBoolMap.h>
30 #endif
31 #include "AliCDBEntry.h"
32
33 #include "TFile.h"
34 #include "TObjArray.h"
35 #include "TH2F.h"
36 #include "TAxis.h"
37 #include "TH1F.h"
38 #include "AliFMDAnaCalibBackgroundCorrection.h"
39 #include "AliFMDAnaCalibEnergyDistribution.h"
40 #include "AliFMDAnaCalibEventSelectionEfficiency.h"
41 #include "AliFMDAnaCalibSharingEfficiency.h"
42 #include "AliPhysicsSelection.h"
43 #include <TVector2.h>
44 #include <TString.h>
45 //#include "AliPWG0Helper.h"
46 #include "AliESDEvent.h"
47 //class AliESDEvent;
48
49 /**
50  * @ingroup FMD_ana
51  */
52 class AliFMDAnaParameters : public TNamed
53 {
54 public:
55   /** Enumeration of things to initialize */ 
56   enum What { 
57     /** Pulser gain */ 
58     kBackgroundCorrection         = 0x1, // Background Correction 
59     kEnergyDistributions          = 0x2, // Energy Distributions
60     kEventSelectionEfficiency     = 0x4, // Event Selection Efficiency
61     kSharingEfficiency            = 0x8  // Sharing algorithm efficiency
62   };
63   
64   enum Trigger { kMB1 = 0, kMB2, kSPDFASTOR, kNOCTP, kEMPTY };
65   
66   enum Energy { k900 , k10000, k14000 , k7000, k2400, k5500};
67   
68   enum MagField {k0G, k5G};
69   
70   enum Species {kPP, kPbPb};
71
72   /** DO NOT USE THIS - ONLY FOR IO */
73   AliFMDAnaParameters();
74   
75   /** Singleton access
76       @return  single to */
77   static AliFMDAnaParameters* Instance();
78   
79   void Init(Bool_t forceReInit=kTRUE, UInt_t what=kBackgroundCorrection|kEnergyDistributions|kEventSelectionEfficiency|kSharingEfficiency);
80   Float_t GetVtxCutZ();
81   Int_t GetNvtxBins();
82   Int_t GetNetaBins();
83   Float_t GetEtaMin();  
84   Float_t GetEtaMax();
85   Int_t GetEtaBin(Float_t eta);
86   Float_t GetMPV(Int_t det, Char_t ring, Float_t eta);
87   Float_t GetConstant(Int_t det, Char_t ring, Float_t eta);
88   Float_t GetSigma(Int_t det, Char_t ring, Float_t eta);
89   Float_t Get2MIPWeight(Int_t det, Char_t ring, Float_t eta);
90   Float_t Get3MIPWeight(Int_t det, Char_t ring, Float_t eta);
91   //static const char* GetBackgroundPath() { return fgkBackgroundCorrection;}
92   // static const char* GetEdistPath()      { return fgkEnergyDists;}
93   static const char* GetBackgroundID() { return fgkBackgroundID;}
94   static const char* GetEdistID()      { return fgkEnergyDistributionID;}
95   static const char* GetEventSelectionEffID()      { return fgkEventSelectionEffID;}
96   static const char* GetSharingEffID()      { return fgkSharingEffID;}
97   TH2F* GetBackgroundCorrection(Int_t det, Char_t ring, Int_t vtxbin);
98   TH1F* GetDoubleHitCorrection(Int_t det, Char_t ring);
99   TH1F* GetSPDDeadCorrection(Int_t vtxbin);
100   
101   TH1F* GetSharingEfficiency(Int_t det, Char_t ring, Int_t vtxbin);
102   TH1F* GetSharingEfficiencyTrVtx(Int_t det, Char_t ring, Int_t vtxbin);
103   Float_t  GetEventSelectionEfficiency(Int_t vtxbin);
104   Float_t  GetPhiFromSector(UShort_t det, Char_t ring, UShort_t sec) const;
105   Float_t  GetEtaFromStrip(UShort_t det, Char_t ring, UShort_t sec, UShort_t strip, Float_t zvtx) const;
106   Float_t  GetStripLength(Char_t ring, UShort_t strip)  ;
107   Float_t  GetBaseStripLength(Char_t ring, UShort_t strip)  ;
108   Float_t  GetMaxR(Char_t ring) const;
109   Float_t  GetMinR(Char_t ring) const;
110   void     SetBackgroundPath(const Char_t* bgpath) {fBackgroundPath.Form(bgpath);}
111   void     SetEnergyPath(const Char_t* epath) {fEnergyPath.Form(epath);}
112   void     SetEventSelectionPath(const Char_t* evpath) {fEventSelectionEffPath.Form(evpath);}
113   void     SetSharingEfficiencyPath(const Char_t* sharpath) {fSharingEffPath.Form(sharpath);}
114   void     SetProcessPrimary(Bool_t prim=kTRUE) {fProcessPrimary = prim;}
115   void     SetProcessHits(Bool_t hits=kTRUE) {fProcessHits = hits;}
116   Bool_t   GetProcessPrimary() const {return fProcessPrimary;} 
117   Bool_t   GetProcessHits() const {return fProcessHits;}
118   Bool_t   GetVertex(const AliESDEvent* esd, Double_t* vertexXYZ);
119   void     SetTriggerDefinition(Trigger trigger) {fTrigger = trigger;}
120   Trigger  GetTriggerDefinition() const {return fTrigger;}
121   Bool_t   IsEventTriggered(const AliESDEvent *esd) const;
122   Bool_t   IsEventTriggered(const AliESDEvent *esd, Trigger trigger) ;
123   void     SetEnergy(Energy energy) {fEnergy = energy;}
124   Energy   GetEnergy() {return fEnergy;}
125   void     SetMagField(MagField magfield) {fMagField = magfield;}
126   char*    GetPath(const char* species);
127   void     SetCollisionSystem(Species collsystem) {fSpecies = collsystem;}
128   Species  GetCollisionSystem() const {return fSpecies;}
129   void     PrintStatus() const;
130   void     Print(Option_t* /* option */) const { PrintStatus(); }
131   char*    GetDndetaAnalysisName() const {return "PWG2forwardDnDeta";}
132   TH1F*    GetEnergyDistribution(Int_t det, Char_t ring, Float_t eta);
133   TH1F*    GetEmptyEnergyDistribution(Int_t det, Char_t ring);
134   TH1F*    GetRingEnergyDistribution(Int_t det, Char_t ring);
135   AliPhysicsSelection* GetPhysicsSelection() const {return fPhysicsSelection;}
136   Bool_t   IsRealData() const {return fRealData; }
137   void     SetRealData(Bool_t realdata) {fRealData = realdata;}
138   Float_t  GetLowSPDLimit() const {return fSPDlowLimit;}
139   Float_t  GetHighSPDLimit() const {return fSPDhighLimit;}
140   void     SetLowSPDLimit(Float_t cut) {fSPDlowLimit = cut;}
141   void     SetHighSPDLimit(Float_t cut) {fSPDhighLimit = cut;}
142   void     SetCentralTriggerSelection(Bool_t selection) {fCentralSelection = selection;}
143   Bool_t   SharingEffPresent() {return fSharingObjectPresent;}
144 protected:
145   
146   AliFMDAnaParameters(const AliFMDAnaParameters& o) 
147     : TNamed(o),
148       fIsInit(o.fIsInit),
149       fBackground(o.fBackground),
150       fEnergyDistribution(o.fEnergyDistribution),
151       fEventSelectionEfficiency(o.fEventSelectionEfficiency),
152       fSharingEfficiency(o.fSharingEfficiency),
153       fCorner1(o.fCorner1),
154       fCorner2(o.fCorner2),
155       fEnergyPath(o.fEnergyPath),
156       fBackgroundPath(o.fBackgroundPath),
157       fEventSelectionEffPath(o.fEventSelectionEffPath),
158       fSharingEffPath(o.fSharingEffPath),
159       fProcessPrimary(o.fProcessPrimary),
160       fProcessHits(o.fProcessHits),
161       fTrigger(o.fTrigger),
162       fEnergy(o.fEnergy),
163       fMagField(o.fMagField),
164       fSpecies(o.fSpecies),
165       fPhysicsSelection(o.fPhysicsSelection), 
166       fRealData(o.fRealData),
167       fSPDlowLimit(o.fSPDlowLimit),
168       fSPDhighLimit(o.fSPDhighLimit),   
169       fCentralSelection(o.fCentralSelection),
170       fSharingObjectPresent(o.fSharingObjectPresent)
171   {}
172   AliFMDAnaParameters& operator=(const AliFMDAnaParameters&) { return *this; }
173   virtual ~AliFMDAnaParameters() {}
174   
175   static AliFMDAnaParameters* fgInstance;   // Static singleton instance
176   
177   //  AliCDBEntry* GetEntry(const char* path, Bool_t fatal=kTRUE) const ;
178   void InitBackground();
179   void InitEnergyDists();
180   void InitEventSelectionEff();
181   void InitSharingEff();
182   
183
184   TObjArray* GetBackgroundArray();
185   
186   TAxis* GetRefAxis();
187   void SetCorners(Char_t ring) ;
188   
189   Bool_t fIsInit;                      //Have we been init ?
190   //TObjArray*  fBackgroundArray;
191   // TObjArray*  fEdistArray;
192   AliFMDAnaCalibBackgroundCorrection*         fBackground;  //BG correction object 
193   AliFMDAnaCalibEnergyDistribution*           fEnergyDistribution; //Energy dist object
194   AliFMDAnaCalibEventSelectionEfficiency*     fEventSelectionEfficiency; //Event selection correction object
195   AliFMDAnaCalibSharingEfficiency*            fSharingEfficiency; //Sharing efficiency correction object
196   //static const char* fgkBackgroundCorrection;
197   //static const char* fgkEnergyDists;
198   static const char* fgkBackgroundID;           // BG cor ID
199   static const char* fgkEnergyDistributionID ;  // Energy dist ID
200   static const char* fgkEventSelectionEffID ;   // Event selection ID
201   static const char* fgkSharingEffID ;          // Sharing efficiency ID  
202   
203   TVector2 fCorner1;                  //First corner of hybrid
204   TVector2 fCorner2;                  //Second corner of hybrid
205   TString  fEnergyPath;               //Path of energy calib
206   TString  fBackgroundPath;           //Path of BG correction
207   TString  fEventSelectionEffPath;    //Path of event selection eff
208   TString  fSharingEffPath;           //Path of sharing eff
209   Bool_t   fProcessPrimary;           //Do we process primary ?
210   Bool_t   fProcessHits;              //Do we process hits ?
211   Trigger  fTrigger;                  //Which trigger are we using ?
212   Energy   fEnergy;                   // CM energy
213   MagField fMagField;                 //Magnetic field
214   Species  fSpecies;                  //PbPb or pp ?
215   AliPhysicsSelection* fPhysicsSelection;  //Physics selection
216   Bool_t   fRealData;                 // real or simulated
217   Float_t  fSPDlowLimit ;             // low limit of SPD tracklets
218   Float_t  fSPDhighLimit ;             // high limit of SPD tracklets
219   Bool_t   fCentralSelection;         //if event selection is done centrally
220   Bool_t   fSharingObjectPresent ;    //Do we have a sharing object ? 
221   ClassDef(AliFMDAnaParameters,1) // Manager of parameters
222 };
223
224 #endif
225 //____________________________________________________________________
226 //
227 // Local Variables:
228 //   mode: C++
229 // End:
230 //
231 // EOF
232 //
233