]>
Commit | Line | Data |
---|---|---|
1 | ||
2 | ||
3 | void SetupTrackCuts(); | |
4 | void SetupPairCuts(); | |
5 | void InitHistograms(); | |
6 | void InitCF(); | |
7 | ||
8 | AliESDtrackCuts *SetupESDtrackCuts(); | |
9 | ||
10 | TString names=("basicQ+SPDfirst+pt>.6+PID"); | |
11 | ||
12 | TObjArray *arrNames=names.Tokenize(";"); | |
13 | ||
14 | const Int_t nDie=arrNames->GetEntries(); | |
15 | ||
16 | AliDielectron *fDiele=0x0; | |
17 | Int_t fCutDefinition=0; | |
18 | Bool_t fIsAOD=kFALSE; | |
19 | ||
20 | AliDielectron* ConfigJpsi2ee(Int_t fCutDefinition, Bool_t isAOD) | |
21 | { | |
22 | // | |
23 | // Setup the instance of AliDielectron | |
24 | // | |
25 | ||
26 | fCutDefinition=fCutDefinition; | |
27 | fIsAOD=isAOD; | |
28 | ||
29 | // create the actual framework object | |
30 | TString name=Form("%02d",fCutDefinition); | |
31 | if (fCutDefinition<arrNames->GetEntriesFast()){ | |
32 | name=arrNames->At(fCutDefinition)->GetName(); | |
33 | } | |
34 | fDiele = new AliDielectron(Form("%s",name.Data()), | |
35 | Form("Track cuts: %s",name.Data())); | |
36 | ||
37 | // cut setup | |
38 | SetupTrackCuts(); | |
39 | SetupPairCuts(); | |
40 | ||
41 | // | |
42 | // histogram setup | |
43 | // only if an AliDielectronHistos object is attached to the | |
44 | // fDielelectron framework histograms will be filled | |
45 | // | |
46 | InitHistograms(); | |
47 | ||
48 | // the last definition uses no cuts and only the QA histograms should be filled! | |
49 | // if (fCutDefinition<nDie-1) | |
50 | InitCF(); | |
51 | ||
52 | return fDiele; | |
53 | } | |
54 | ||
55 | //______________________________________________________________________________________ | |
56 | void SetupTrackCuts() | |
57 | { | |
58 | // | |
59 | // Setup the track cuts | |
60 | // | |
61 | ||
62 | //ESD quality cuts DielectronTrackCuts | |
63 | if (!fIsAOD) { | |
64 | fDiele->GetTrackFilter().AddCuts(SetupESDtrackCuts()); | |
65 | } else { | |
66 | AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts"); | |
67 | trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
68 | trackCuts->SetRequireTPCRefit(kTRUE); | |
69 | trackCuts->SetRequireITSRefit(kTRUE); | |
70 | fDiele->GetTrackFilter().AddCuts(trackCuts); | |
71 | } | |
72 | ||
73 | if(fCutDefinition==0) { | |
74 | //Pt cut ---------------------------------------------------------- | |
75 | AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut"); | |
76 | pt->AddCut(AliDielectronVarManager::kPt,0.6,1e30); | |
77 | ||
78 | //AOD additions since there are no AliESDtrackCuts ----------------- | |
79 | // | |
80 | if (fIsAOD){ | |
81 | // TPC #clusteres cut | |
82 | pt->AddCut(AliDielectronVarManager::kNclsTPC,90.,160.); | |
83 | pt->AddCut(AliDielectronVarManager::kEta,-0.8,0.8); | |
84 | //TODO: DCA cuts to be investigated!!! | |
85 | // pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.); | |
86 | // pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.); | |
87 | } | |
88 | fDiele->GetTrackFilter().AddCuts(pt); | |
89 | ||
90 | // PID cuts -------------------------------------------------------- | |
91 | AliDielectronPID *pid = new AliDielectronPID("PID10","TPC nSigma |e|<3 + |Pi|>3 + |P|>3 + TOF nSigma |e|<3"); | |
92 | pid->SetDefaults(10); | |
93 | fDiele->GetTrackFilter().AddCuts(pid); | |
94 | } | |
95 | } | |
96 | ||
97 | //______________________________________________________________________________________ | |
98 | void SetupPairCuts() | |
99 | { | |
100 | // | |
101 | // Setup the pair cuts | |
102 | // | |
103 | ||
104 | //Invariant mass and rapidity selection | |
105 | AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("2<M<4+|Y|<.8","2<M<4 + |Y|<.8"); | |
106 | pairCut->AddCut(AliDielectronVarManager::kM,2.,4.); | |
107 | pairCut->AddCut(AliDielectronVarManager::kY,-0.8,0.8); | |
108 | fDiele->GetPairFilter().AddCuts(pairCut); | |
109 | } | |
110 | ||
111 | //______________________________________________________________________________________ | |
112 | AliESDtrackCuts *SetupESDtrackCuts() | |
113 | { | |
114 | // | |
115 | // Setup default AliESDtrackCuts | |
116 | // | |
117 | AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts; | |
118 | ||
119 | // basic track quality cuts (basicQ) | |
120 | esdTrackCuts->SetMaxDCAToVertexZ(3.0); | |
121 | esdTrackCuts->SetMaxDCAToVertexXY(1.0); | |
122 | ||
123 | esdTrackCuts->SetEtaRange( -0.8 , 0.8 ); | |
124 | ||
125 | esdTrackCuts->SetAcceptKinkDaughters(kFALSE); | |
126 | esdTrackCuts->SetRequireITSRefit(kTRUE); | |
127 | esdTrackCuts->SetRequireTPCRefit(kTRUE); | |
128 | ||
129 | esdTrackCuts->SetMinNClustersTPC(90); | |
130 | esdTrackCuts->SetMaxChi2PerClusterTPC(4); | |
131 | ||
132 | esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
133 | ||
134 | return esdTrackCuts; | |
135 | } | |
136 | ||
137 | ||
138 | //______________________________________________________________________________________ | |
139 | void InitHistograms() | |
140 | { | |
141 | // | |
142 | // Initialise the histograms | |
143 | // | |
144 | ||
145 | //Setup histogram Manager | |
146 | AliDielectronHistos *histos=new AliDielectronHistos(fDiele->GetName(),fDiele->GetTitle()); | |
147 | ||
148 | //Initialise histogram classes | |
149 | histos->SetReservedWords("Track;Pair"); | |
150 | ||
151 | //Track classes | |
152 | //to fill also track info from 2nd event loop until 2 | |
153 | for (Int_t i=0; i<2; ++i){ | |
154 | histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); | |
155 | } | |
156 | ||
157 | //Pair classes | |
158 | // to fill also mixed event histograms loop until 10 | |
159 | for (Int_t i=0; i<3; ++i){ | |
160 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); | |
161 | } | |
162 | ||
163 | //legs from pair | |
164 | for (Int_t i=0; i<3; ++i){ | |
165 | histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i))); | |
166 | } | |
167 | ||
168 | //add histograms to Track classes | |
169 | histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",400,0,20.,AliDielectronVarManager::kPt); | |
170 | histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC); | |
171 | ||
172 | histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",500,-1.,1.,AliDielectronVarManager::kImpactParXY); | |
173 | histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",600,-3.,3.,AliDielectronVarManager::kImpactParZ); | |
174 | histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks", | |
175 | 200,-1,1,200,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
176 | ||
177 | histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks", | |
178 | 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
179 | histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks", | |
180 | 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
181 | ||
182 | //add histograms to Pair classes | |
183 | histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs", | |
184 | 201,-.01,4.01,AliDielectronVarManager::kM); | |
185 | histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs", | |
186 | 100,-1.,1.,AliDielectronVarManager::kY); | |
187 | histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle", | |
188 | 100,0.,3.15,AliDielectronVarManager::kOpeningAngle); | |
189 | ||
190 | fDiele->SetHistogramManager(histos); | |
191 | } | |
192 | ||
193 | ||
194 | void InitCF() | |
195 | { | |
196 | // | |
197 | // Setupd the CF Manager if needed | |
198 | // | |
199 | ||
200 | AliDielectronCF *cf=new AliDielectronCF(fDiele->GetName(),fDiele->GetTitle()); | |
201 | ||
202 | //pair variables | |
203 | TVectorD *binLimPt=new TVectorD(6); | |
204 | (*binLimPt)[0]=0.0; (*binLimPt)[1]=0.8; (*binLimPt)[2]=1.4; (*binLimPt)[3]=2.8; (*binLimPt)[4]=4.2; (*binLimPt)[5]=9.9; | |
205 | cf->AddVariable(AliDielectronVarManager::kPt,binLimPt); | |
206 | cf->AddVariable(AliDielectronVarManager::kY,40,-2,2); | |
207 | cf->AddVariable(AliDielectronVarManager::kM,150,0.,150*.027); //27Mev Steps | |
208 | cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10); | |
209 | //leg variables | |
210 | cf->AddVariable(AliDielectronVarManager::kPt,2,0.8,1.2,kTRUE); | |
211 | cf->AddVariable(AliDielectronVarManager::kNclsTPC,3,90,120,kTRUE); | |
212 | ||
213 | fDiele->SetCFManagerPair(cf); | |
214 | ||
215 | } | |
216 |