1 #ifndef ALIFMDANAPARAMETERS_H
2 #define ALIFMDANAPARAMETERS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * Latest changes by Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
8 * See cxx source for full Copyright notice
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
15 //Author: Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
17 //____________________________________________________________________
25 #ifndef ALIFMDUSHORTMAP_H
26 # include <AliFMDUShortMap.h>
28 #ifndef ALIFMDBOOLMAP_H
29 # include <AliFMDBoolMap.h>
31 #include "AliCDBEntry.h"
34 #include "TObjArray.h"
38 #include "AliFMDAnaCalibBackgroundCorrection.h"
39 #include "AliFMDAnaCalibEnergyDistribution.h"
40 #include "AliFMDAnaCalibEventSelectionEfficiency.h"
41 #include "AliFMDAnaCalibSharingEfficiency.h"
42 #include "AliPhysicsSelection.h"
45 //#include "AliPWG0Helper.h"
46 #include "AliESDEvent.h"
52 class AliFMDAnaParameters : public TNamed
55 /** Enumeration of things to initialize */
58 kBackgroundCorrection = 0x1, // Background Correction
59 kEnergyDistributions = 0x2, // Energy Distributions
60 kEventSelectionEfficiency = 0x4, // Event Selection Efficiency
61 kSharingEfficiency = 0x8 // Sharing algorithm efficiency
64 enum Trigger { kMB1 = 0, kMB2, kSPDFASTOR, kNOCTP, kEMPTY };
66 enum Energy { k900 , k10000, k14000 , k7000, k2400, k5500};
68 enum MagField {k0G, k5G};
70 enum Species {kPP, kPbPb};
72 /** DO NOT USE THIS - ONLY FOR IO */
73 AliFMDAnaParameters();
77 static AliFMDAnaParameters* Instance();
79 void Init(Bool_t forceReInit=kTRUE, UInt_t what=kBackgroundCorrection|kEnergyDistributions|kEventSelectionEfficiency|kSharingEfficiency);
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);
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;}
146 AliFMDAnaParameters(const AliFMDAnaParameters& o)
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),
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)
172 AliFMDAnaParameters& operator=(const AliFMDAnaParameters&) { return *this; }
173 virtual ~AliFMDAnaParameters() {}
175 static AliFMDAnaParameters* fgInstance; // Static singleton instance
177 // AliCDBEntry* GetEntry(const char* path, Bool_t fatal=kTRUE) const ;
178 void InitBackground();
179 void InitEnergyDists();
180 void InitEventSelectionEff();
181 void InitSharingEff();
184 TObjArray* GetBackgroundArray();
187 void SetCorners(Char_t ring) ;
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
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
225 //____________________________________________________________________