]>
Commit | Line | Data |
---|---|---|
8c06b662 | 1 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); |
2 | void InitCF(AliDielectron* die, Int_t cutDefinition); | |
443a091c | 3 | void InitHF(AliDielectron* die, Int_t cutDefinition); |
8c06b662 | 4 | |
5 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition); | |
6 | void SetupPairCuts(AliDielectron *die, Int_t cutDefinition); | |
7 | ||
8 | void AddMCSignals(AliDielectron *die); | |
9 | void SetEtaCorrection(); | |
10 | TVectorD *GetRunNumbers(); | |
11 | ||
8c06b662 | 12 | TString names=("TPC;TOF;TRD;rec;TOFTRD;TOFTRD2;ITScls;ITSamy;dca;chi2;Gam0;Gam01;Gam05;Gam10;Gam15;Gam20;EtaGap01;EtaGap02;EtaGap03;EtaGap04;EtaGap05;SubLS;SubRndm"); |
13 | enum { kTPC=0, kTOF, kTRD, krec, kTOFTRD, kTOFTRD2, kITScls, kITSamy, kDCA, kChi, kGam0, kGam01, kGam05, kGam10, kGam15, kGam20, kEtaGap01, kEtaGap02, kEtaGap03, kEtaGap04, kEtaGap05, kSubLS, kSubRndm }; | |
14 | ||
15 | TObjArray *arrNames=names.Tokenize(";"); | |
16 | const Int_t nDie=arrNames->GetEntries(); | |
17 | ||
256b2ae5 | 18 | Bool_t isESD = kTRUE; |
2d7910f3 | 19 | Bool_t hasMC = kFALSE; |
20 | TString list = gSystem->Getenv("LIST"); | |
6938ad55 | 21 | |
256b2ae5 | 22 | |
2d7910f3 | 23 | AliDielectron* ConfigJpsi_jb_PbPb(Int_t cutDefinition, TString prod="") |
8c06b662 | 24 | { |
25 | // | |
26 | // Setup the instance of AliDielectron | |
27 | // | |
187de573 | 28 | |
2d7910f3 | 29 | // find mc or not? |
30 | if( list.IsNull()) list=prod; | |
31 | if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE; | |
32 | if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE; | |
8c06b662 | 33 | |
34 | //ESD handler? | |
256b2ae5 | 35 | isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()); |
187de573 | 36 | |
8c06b662 | 37 | // switch off some configurations |
38 | switch(cutDefinition) { | |
3e831a33 | 39 | case kTPC: |
187de573 | 40 | //case kTOF: |
3e831a33 | 41 | case kTRD: |
42 | case kTOFTRD: | |
8c06b662 | 43 | return 0x0; |
44 | break; | |
3e831a33 | 45 | case krec: |
8c06b662 | 46 | if(!hasMC) return 0x0; |
47 | break; | |
187de573 | 48 | //case kTOFTRD2: |
8c06b662 | 49 | case kITScls: |
50 | case kITSamy: | |
51 | case kDCA: | |
187de573 | 52 | case kChi: |
8c06b662 | 53 | return 0x0; |
54 | break; | |
187de573 | 55 | // case kGam0: |
56 | // case kGam01: | |
57 | // case kGam05: | |
58 | // case kGam10: | |
59 | // case kGam15: | |
8c06b662 | 60 | // case kGam20: |
187de573 | 61 | case kEtaGap01: |
62 | case kEtaGap02: | |
63 | case kEtaGap03: | |
64 | case kEtaGap04: | |
65 | case kEtaGap05: | |
8c06b662 | 66 | case kSubLS: |
67 | case kSubRndm: | |
68 | if( hasMC) return 0x0; | |
69 | break; | |
70 | } | |
187de573 | 71 | |
8c06b662 | 72 | // create the actual framework object |
73 | TString name=Form("%02d",cutDefinition); | |
74 | if (cutDefinition<arrNames->GetEntriesFast()){ | |
75 | name=arrNames->At(cutDefinition)->GetName(); | |
76 | } | |
0094dcc0 | 77 | AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("Track cuts: %s",name.Data())); |
78 | die->SetHasMC(hasMC); | |
79 | ||
256b2ae5 | 80 | printf(" Add %s %s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?"MC":""),name.Data(),list.Data()); |
81 | ||
8c06b662 | 82 | // Monte Carlo Signals and TRD efficiency tables |
83 | if(hasMC) { | |
84 | AddMCSignals(die); | |
256b2ae5 | 85 | printf(" Add %d MC signals \n",die->GetMCSignals()->GetEntriesFast()); |
187de573 | 86 | |
8c06b662 | 87 | // trd tables |
256b2ae5 | 88 | /* if (list.Contains("LHC11a") ) { |
89 | TString pidTab="$TRAIN_ROOT/util/dielectron/dielectron/TRDpidEff_eleProb07_TRDntr4_6.root"; | |
90 | TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); | |
91 | if (trainRoot.IsNull()) pidTab="$ALICE_ROOT/PWGDQ/dielectron/files/TRDpidEff_eleProb07_TRDntr4_6.root"; | |
8c06b662 | 92 | |
256b2ae5 | 93 | if (gSystem->AccessPathName(gSystem->ExpandPathName(pidTab.Data()))) |
94 | Error("ConfigPbPb","PID table not found: %s",pidTab.Data()); | |
187de573 | 95 | else |
256b2ae5 | 96 | die->SetTRDcorrectionFilename(pidTab.Data()); |
97 | }*/ | |
8c06b662 | 98 | } |
187de573 | 99 | |
8c06b662 | 100 | // cut setup |
101 | SetupTrackCuts(die,cutDefinition); | |
102 | SetupPairCuts(die,cutDefinition); | |
187de573 | 103 | |
8c06b662 | 104 | // histogram setup |
3e831a33 | 105 | if(cutDefinition == kTOF || |
106 | cutDefinition == kTOFTRD || | |
187de573 | 107 | cutDefinition == kGam0 || |
108 | cutDefinition == kTOFTRD2 || | |
256b2ae5 | 109 | cutDefinition >= kEtaGap01 ) { |
8c06b662 | 110 | InitHistograms(die,cutDefinition); |
256b2ae5 | 111 | printf(" Add %d types and %03d histos to the manager \n",die->GetHistogramList()->GetEntries(), |
112 | 0/*die->GetHistoManager()->GetList()->GetEntries()*/); | |
187de573 | 113 | } |
256b2ae5 | 114 | |
443a091c | 115 | // CF container setup, switched off |
187de573 | 116 | if(cutDefinition < kEtaGap01 || |
256b2ae5 | 117 | cutDefinition == kSubRndm ) { |
443a091c | 118 | if(0) InitCF(die,cutDefinition); |
119 | if(0) printf(" Add %d pair, %d leg vars, %p steps and %p bins to the container \n", | |
120 | die->GetCFManagerPair()->GetNvarsPair(),die->GetCFManagerPair()->GetNvarsLeg(), | |
121 | die->GetCFManagerPair()->GetContainer(), die->GetCFManagerPair()->GetContainer() ); | |
256b2ae5 | 122 | } |
123 | ||
443a091c | 124 | // HF arrays setup |
779267ed | 125 | // if(cutDefinition < kEtaGap01 ) { |
126 | // InitHF(die,cutDefinition); | |
127 | // } | |
443a091c | 128 | |
129 | ||
8c06b662 | 130 | // bgrd estimators |
131 | if(!hasMC) { | |
256b2ae5 | 132 | printf(" Activate bgrd estimators: ME and ROT \n"); |
187de573 | 133 | |
8c06b662 | 134 | // rotations |
135 | AliDielectronTrackRotator *rot=new AliDielectronTrackRotator; | |
136 | rot->SetIterations(10); | |
137 | rot->SetConeAnglePhi(TMath::Pi()); | |
138 | rot->SetStartAnglePhi(TMath::Pi()); | |
139 | die->SetTrackRotator(rot); | |
140 | // mixing | |
141 | AliDielectronMixingHandler *mix=new AliDielectronMixingHandler; | |
66c684fd | 142 | mix->AddVariable(AliDielectronVarManager::kZvPrim, 30,-10.,10.); |
143 | // mix->AddVariable(AliDielectronVarManager::kCentrality, 8, 0.,80.); | |
8c06b662 | 144 | mix->SetMixType(AliDielectronMixingHandler::kAll); |
66c684fd | 145 | mix->SetDepth(120); |
8c06b662 | 146 | die->SetMixingHandler(mix); |
187de573 | 147 | |
148 | ||
3e831a33 | 149 | // TPC event plane configurations |
150 | Double_t gGap; | |
151 | switch(cutDefinition) { | |
8c06b662 | 152 | case kEtaGap01: gGap=0.1; break; |
153 | case kEtaGap02: gGap=0.2; break; | |
154 | case kEtaGap03: gGap=0.3; break; | |
155 | case kEtaGap04: gGap=0.4; break; | |
156 | case kEtaGap05: gGap=0.5; break; | |
157 | default: gGap=0.0; | |
3e831a33 | 158 | } |
187de573 | 159 | |
8c06b662 | 160 | AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI"); |
d41e5a99 | 161 | poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window |
187de573 | 162 | die->GetEventPlanePOIPreFilter().AddCuts(poi); |
163 | ||
164 | if(cutDefinition >= kEtaGap01 && | |
8c06b662 | 165 | cutDefinition < kSubLS ) { |
166 | AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap"); | |
167 | etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE); | |
168 | die->GetEventPlanePreFilter().AddCuts(etaGap); | |
169 | } | |
187de573 | 170 | |
8c06b662 | 171 | if(cutDefinition==kSubLS) die->SetLikeSignSubEvents(); |
172 | die->SetPreFilterEventPlane(); | |
173 | } | |
187de573 | 174 | |
8c06b662 | 175 | // prefilter settings |
187de573 | 176 | if(cutDefinition == kTOFTRD2) |
8c06b662 | 177 | die->SetPreFilterAllSigns(); |
187de573 | 178 | else |
8c06b662 | 179 | die->SetPreFilterUnlikeOnly(); |
187de573 | 180 | |
8c06b662 | 181 | // setup eta correction |
256b2ae5 | 182 | // if(isESD && list.Contains("LHC10h")) SetEtaCorrection(); |
187de573 | 183 | |
d41e5a99 | 184 | // VZERO calibration |
185 | TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); | |
186 | if (!trainRoot.IsNull()) { | |
187 | die->SetVZEROCalibrationFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroCalibrationLHC10h.root"); | |
188 | die->SetVZERORecenteringFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroRecenteringLHC10h.root"); | |
189 | } | |
187de573 | 190 | |
8c06b662 | 191 | return die; |
192 | } | |
193 | ||
194 | //______________________________________________________________________________________ | |
195 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition) | |
196 | { | |
197 | // | |
198 | // Setup the track cuts | |
199 | // | |
9dcb603f | 200 | |
8c06b662 | 201 | // Quality cuts |
202 | AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND); | |
203 | die->GetTrackFilter().AddCuts(cuts); | |
187de573 | 204 | |
4a1bef93 | 205 | // AOD track filter (needs to be first cut) |
206 | AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter"); | |
207 | trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqualSPDanyPIDele); | |
256b2ae5 | 208 | // if(!isESD) cuts->AddCut(trkFilter); |
4a1bef93 | 209 | |
8c06b662 | 210 | //Pt cut, should make execution a bit faster |
d41e5a99 | 211 | AliDielectronVarCuts *pt = new AliDielectronVarCuts("PtCut","PtCut"); |
3e831a33 | 212 | pt->AddCut(AliDielectronVarManager::kPt,1.1,1e30); //0.8 |
8c06b662 | 213 | cuts->AddCut(pt); |
187de573 | 214 | |
d41e5a99 | 215 | // track cuts ESD and AOD |
8c06b662 | 216 | AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts"); |
217 | varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
218 | varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
219 | varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); | |
d28542ba | 220 | varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); |
8c06b662 | 221 | varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0); |
d41e5a99 | 222 | varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0); |
8c06b662 | 223 | cuts->AddCut(varCuts); |
187de573 | 224 | |
8c06b662 | 225 | AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts"); |
3c59f53e | 226 | // trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kAny); |
227 | // trkCuts->SetClusterRequirementITS(AliDielectronTrackCuts::kSPD,AliDielectronTrackCuts::kFirst); | |
779267ed | 228 | trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 15); // ITS-4 = 1+2+4+8 |
187de573 | 229 | // trkCuts->SetMaxWaivedITSNcls(1); |
8c06b662 | 230 | trkCuts->SetRequireITSRefit(kTRUE); |
231 | trkCuts->SetRequireTPCRefit(kTRUE); | |
232 | cuts->AddCut(trkCuts); | |
187de573 | 233 | |
8c06b662 | 234 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
235 | AliDielectronPID *pid = new AliDielectronPID("PID","PID"); | |
187de573 | 236 | |
8c06b662 | 237 | ////////////////////////////////// DATA |
238 | if(!hasMC) { | |
187de573 | 239 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,3.0,0.,0.,kTRUE); |
8c06b662 | 240 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE); |
187de573 | 241 | |
242 | if(cutDefinition==kTRD || cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2) | |
8c06b662 | 243 | pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE, |
244 | AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality); | |
245 | } | |
187de573 | 246 | |
8c06b662 | 247 | ////////////////////////////////// MC |
248 | if(hasMC) { | |
187de573 | 249 | |
8c06b662 | 250 | // electron |
8c06b662 | 251 | Double_t nSigmaPi = 3.5; Double_t nSigmaP = 3.5; |
252 | Double_t resolution=0.0549; | |
253 | Double_t BBpro[5] = {0}; | |
254 | Double_t BBpio[5] = {0}; | |
187de573 | 255 | |
8c06b662 | 256 | for(Int_t icent=0; icent<8; icent++) { |
187de573 | 257 | |
8c06b662 | 258 | switch (icent) { |
259 | case 0: // 0-10% | |
260 | BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848; | |
261 | BBpio[0] = 0.0252122; BBpio[1] = 38.8991; BBpio[2] = 4.0901e-11; BBpio[3] = 5.27988; BBpio[4] = 4.3108; | |
262 | break; | |
263 | case 1: // 10-20% | |
264 | BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999; | |
265 | BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093; | |
266 | break; | |
267 | case 2: // 20-30% | |
268 | BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999; | |
269 | BBpio[0] = 0.0263205; BBpio[1] = 37.9307; BBpio[2] = 4.29724e-11; BBpio[3] = 5.74458; BBpio[4] = 4.32459; | |
270 | break; | |
271 | case 3: // 30-40% | |
272 | BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999; | |
273 | BBpio[0] = 0.026294; BBpio[1] = 39.0346; BBpio[2] = 4.12261e-11; BBpio[3] = 5.28808; BBpio[4] = 4.31301; | |
274 | break; | |
275 | case 4: // 40-50% | |
276 | BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999; | |
277 | BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363; | |
278 | break; | |
279 | case 5: // 50-60% | |
280 | BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999; | |
281 | BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363; | |
282 | break; | |
283 | case 6: // 60-70% | |
284 | BBpro[0] = 0.031555; BBpro[1] = 26.0595; BBpro[2] = 3.02422e-11; BBpro[3] = 2.05594; BBpro[4] = 5.99848; | |
285 | BBpio[0] = 0.026302; BBpio[1] = 38.6888; BBpio[2] = 3.56792e-11; BBpio[3] = 5.2465; BBpio[4] = 4.31094; | |
286 | break; | |
287 | case 7: // 70-80% | |
288 | BBpro[0] = 0.0315171; BBpro[1] = 25.8656; BBpro[2] = 3.03896e-11; BBpro[3] = 2.05802; BBpro[4] = 5.99999; | |
289 | BBpio[0] = 0.0263134; BBpio[1] = 38.2084; BBpio[2] = 3.75159e-11; BBpio[3] = 5.78125; BBpio[4] = 4.31363; | |
290 | break; | |
291 | case 8: // 80-90% | |
292 | BBpro[0] = 0.0313438; BBpro[1] = 25.8666; BBpro[2] = 4.5457e-11; BBpro[3] = 2.07912; BBpro[4] = 5.99986; | |
293 | BBpio[0] = 0.0252127; BBpio[1] = 33.8617; BBpio[2] = 3.56866e-11; BBpio[3] = 5.24831; BBpio[4] = 4.31093; | |
294 | break; | |
295 | case 9: // 90-100% | |
296 | BBpro[0] = 0.0319126; BBpro[1] = 36.8784; BBpro[2] = 3.4274e-11; BBpro[3] = 3.2431; BBpro[4] = 5.93388; | |
297 | BBpio[0] = 0.027079; BBpio[1] = 67.5936; BBpio[2] = 9.72548e-11; BBpio[3] = 9.61382; BBpio[4] = 5.99372; | |
298 | break; | |
299 | } | |
187de573 | 300 | |
301 | ||
8c06b662 | 302 | TF1 *ffPro=new TF1(Form("fBethe%d_c%d",AliPID::kProton,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaP,resolution, AliPID::ParticleMass(AliPID::kProton), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.); |
187de573 | 303 | |
8c06b662 | 304 | TF1 *ffPio=new TF1(Form("fBethe%d_c%d",AliPID::kPion,icent), Form("(%f*%f+(AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])-AliExternalTrackParam::BetheBlochAleph(x/%f,[0],[1],[2],[3],[4])))/%f", nSigmaPi,resolution, AliPID::ParticleMass(AliPID::kPion), AliPID::ParticleMass(AliPID::kElectron), resolution), 0.05,200.); |
187de573 | 305 | |
8c06b662 | 306 | //LHC11a10b |
2d7910f3 | 307 | if (list.Contains("LHC11a10b")) { |
256b2ae5 | 308 | printf(" LHC11a10b parameters\n"); |
8c06b662 | 309 | ffPro->SetParameters(BBpro[0],BBpro[1],BBpro[2],BBpro[3],BBpro[4]); |
310 | ffPio->SetParameters(BBpio[0],BBpio[1],BBpio[2],BBpio[3],BBpio[4]); | |
187de573 | 311 | |
8c06b662 | 312 | // proton cut |
313 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPro,10,((double)icent)*10.,((double)icent+1)*10, | |
314 | kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality); | |
315 | // pion cut | |
316 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,ffPio,10,((double)icent)*10.,((double)icent+1)*10, | |
317 | kFALSE,AliDielectronPID::kRequire,AliDielectronVarManager::kCentrality); | |
318 | } | |
319 | } | |
187de573 | 320 | |
8c06b662 | 321 | // shifts for the nSigma electrons |
322 | TGraph* nSigmaCorrection = new TGraph(); | |
323 | // LHC11a10b | |
2d7910f3 | 324 | if (list.Contains("LHC11a10b")) { |
8c06b662 | 325 | nSigmaCorrection->SetPoint(0, 137161., -0.50-(0.28)); |
326 | nSigmaCorrection->SetPoint(1, 139510., -0.50-(0.28)); | |
327 | pid->SetCorrGraph(nSigmaCorrection); | |
328 | } | |
187de573 | 329 | |
8c06b662 | 330 | } //hasMC |
187de573 | 331 | |
8c06b662 | 332 | ////////////////////////////////// DATA + MC |
d41e5a99 | 333 | // pid cuts TPC + TOF & TRD |
e0f6eeb2 | 334 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-4.0,4.); |
187de573 | 335 | if(cutDefinition==kTOF || cutDefinition>=kTOFTRD || cutDefinition>=kTOFTRD2) |
8c06b662 | 336 | pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable); |
187de573 | 337 | |
8c06b662 | 338 | if(cutDefinition!=krec) cuts->AddCut(pid); |
339 | /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ | |
187de573 | 340 | |
341 | ||
8c06b662 | 342 | // exclude conversion electrons selected by the tender |
343 | AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv"); | |
344 | noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE); | |
345 | cuts->AddCut(noconv); | |
187de573 | 346 | |
8c06b662 | 347 | } |
348 | ||
349 | //______________________________________________________________________________________ | |
350 | void SetupPairCuts(AliDielectron *die, Int_t cutDefinition) | |
351 | { | |
352 | // | |
353 | // Setup the pair cuts | |
354 | // | |
187de573 | 355 | |
8c06b662 | 356 | // conversion rejection |
357 | Double_t gCut; | |
358 | switch(cutDefinition) { | |
359 | case kTPC: gCut=0.05; break; | |
360 | case krec: gCut=0.05; break; | |
361 | case kGam10: gCut=0.1; break; | |
362 | case kGam15: gCut=0.15; break; | |
363 | case kGam20: gCut=0.2; break; | |
364 | case kGam05: gCut=0.05; break; | |
365 | case kGam01: gCut=0.01; break; | |
366 | case kGam0: gCut=0.0; break; | |
367 | default: gCut=0.05; // default | |
368 | } | |
187de573 | 369 | |
d28542ba | 370 | AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts"); |
371 | // gammaCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kTRUE); | |
372 | // gammaCuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kTRUE); | |
373 | // gammaCuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kTRUE); | |
374 | // gammaCuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kTRUE); | |
375 | // gammaCuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kTRUE); | |
376 | gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut); | |
377 | die->GetPairPreFilter().AddCuts(gammaCuts); | |
187de573 | 378 | |
379 | ||
8c06b662 | 380 | // rapidity selection |
e0f6eeb2 | 381 | // AliDielectronVarCuts *rapCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9"); |
382 | // rapCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9); | |
383 | // die->GetPairFilter().AddCuts(rapCut); | |
187de573 | 384 | |
8c06b662 | 385 | } |
386 | ||
8c06b662 | 387 | //______________________________________________________________________________________ |
388 | void InitHistograms(AliDielectron *die, Int_t cutDefinition) | |
389 | { | |
390 | // | |
391 | // Initialise the histograms | |
392 | // | |
187de573 | 393 | |
8c06b662 | 394 | //Setup histogram Manager |
395 | AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle()); | |
187de573 | 396 | |
8c06b662 | 397 | //add histograms to event class |
398 | histos->AddClass("Event"); | |
779267ed | 399 | histos->UserHistogram("Event","RunNumber","Events per run;run;events", |
400 | GetRunNumbers(), | |
401 | AliDielectronVarManager::kRunNumber); | |
187de573 | 402 | histos->UserHistogram("Event","VtxZ","Vertex Z;z (cm)", 300,-15.,15., |
8c06b662 | 403 | AliDielectronVarManager::kZvPrim); |
187de573 | 404 | histos->UserHistogram("Event","Centrality","Centrality;centrality (%);events", |
405 | "0.,5.,10.,20.,40.,50.,60.,80.", | |
8c06b662 | 406 | AliDielectronVarManager::kCentrality); |
187de573 | 407 | histos->UserHistogram("Event","Multiplicity","Multiplicity V0;Multiplicity V0;events", 500,0.,25000., |
8c06b662 | 408 | AliDielectronVarManager::kMultV0); |
409 | histos->UserHistogram("Event","Cent_Mult","Centrality vs. Multiplicity;centrality (%);Multiplicity V0", | |
410 | 10,0.,100., 500,0.,25000., | |
411 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kMultV0); | |
412 | histos->UserProfile("Event","Cent_Nacc", | |
413 | "accepted tracks;centrality (%)", | |
414 | AliDielectronVarManager::kNacc, | |
415 | "0.,5.,10.,20.,40.,50.,60.,80.,100.", | |
416 | AliDielectronVarManager::kCentrality); | |
417 | histos->UserProfile("Event","Cent_NVtxContrib", | |
418 | "number of vertex contributors;centrality (%)", | |
419 | AliDielectronVarManager::kNVtxContrib, | |
420 | "0.,5.,10.,20.,40.,50.,60.,80.,100.", | |
421 | AliDielectronVarManager::kCentrality); | |
187de573 | 422 | |
8c06b662 | 423 | ////// FLOW ////// |
3e831a33 | 424 | if(cutDefinition == kTOFTRD || cutDefinition==kTOF) { |
8c06b662 | 425 | histos->UserHistogram("Event","TPCxH2","TPC Qx component;TPCxH2", |
426 | 100,-1500.,1500., | |
427 | AliDielectronVarManager::kTPCxH2); | |
428 | histos->UserHistogram("Event","TPCyH2","TPC Qy component;TPCyH2", | |
429 | 100,-1500.,1500., | |
430 | AliDielectronVarManager::kTPCyH2); | |
431 | histos->UserHistogram("Event","TPCrpH2","TPC reaction plane; #Psi^{TPC}", | |
432 | 100,-2.,2., | |
433 | AliDielectronVarManager::kTPCrpH2); | |
434 | histos->UserHistogram("Event","TPCsub1xH2","TPC Qx component sub1;TPCsub1xH2", | |
435 | 100,-1500.,1500., | |
436 | AliDielectronVarManager::kTPCsub1xH2); | |
437 | histos->UserHistogram("Event","TPCsub1yH2","TPC Qy component sub1;TPCsub1yH2", | |
438 | 100,-1500.,1500., | |
439 | AliDielectronVarManager::kTPCsub1yH2); | |
440 | histos->UserHistogram("Event","TPCsub1rpH2","TPC reaction plane sub1; #Psi^{sub1}", | |
441 | 100,-2.,2., | |
442 | AliDielectronVarManager::kTPCsub1rpH2); | |
443 | histos->UserHistogram("Event","TPCsub2xH2","TPC Qx component sub2;TPCsub2xH2", | |
444 | 100,-1500.,1500., | |
445 | AliDielectronVarManager::kTPCsub2xH2); | |
446 | histos->UserHistogram("Event","TPCsub2yH2","TPC Qy component sub2;TPCsub2yH2", | |
447 | 100,-1500.,1500., | |
448 | AliDielectronVarManager::kTPCsub2yH2); | |
449 | histos->UserHistogram("Event","TPCsub2rpH2","TPC reaction plane sub2; #Psi^{sub2}", | |
450 | 100,-2.,2., | |
451 | AliDielectronVarManager::kTPCsub2rpH2); | |
452 | histos->UserHistogram("Event","TPCsub12DiffH2","TPC reaction plane diff; cos(2(#Psi^{sub1}-#Psi^{sub2}))", | |
453 | 100,-1.,1., | |
454 | AliDielectronVarManager::kTPCsub12DiffH2); | |
455 | /* // uncorrected eventplane | |
456 | histos->UserHistogram("Event","TPCxH2uc","TPC Qx component;TPCxH2uc", | |
457 | 100,-1500.,1500., | |
458 | AliDielectronVarManager::kTPCxH2uc); | |
459 | histos->UserHistogram("Event","TPCyH2uc","TPC Qy component;TPCyH2uc", | |
460 | 100,-1500.,1500., | |
461 | AliDielectronVarManager::kTPCyH2uc); | |
462 | histos->UserHistogram("Event","TPCrpH2uc","TPC reaction plane;TPCrpH2uc", | |
463 | 100,-2.,2., | |
464 | AliDielectronVarManager::kTPCrpH2uc); | |
465 | histos->UserHistogram("Event","TPCsub1xH2uc","TPC Qx component sub1;TPCsub1xH2uc", | |
466 | 100,-1500.,1500., | |
467 | AliDielectronVarManager::kTPCsub1xH2uc); | |
468 | histos->UserHistogram("Event","TPCsub1yH2uc","TPC Qy component sub1;TPCsub1yH2uc", | |
469 | 100,-1500.,1500., | |
470 | AliDielectronVarManager::kTPCsub1yH2uc); | |
471 | histos->UserHistogram("Event","TPCsub1rpH2uc","TPC reaction plane sub1;TPCsub1rpH2uc", | |
472 | 100,-2.,2., | |
473 | AliDielectronVarManager::kTPCsub1rpH2uc); | |
474 | histos->UserHistogram("Event","TPCsub2xH2uc","TPC Qx component sub2;TPCsub2xH2uc", | |
475 | 100,-1500.,1500., | |
476 | AliDielectronVarManager::kTPCsub2xH2uc); | |
477 | histos->UserHistogram("Event","TPCsub2yH2uc","TPC Qy component sub2;TPCsub2yH2uc", | |
478 | 100,-1500.,1500., | |
479 | AliDielectronVarManager::kTPCsub2yH2uc); | |
480 | histos->UserHistogram("Event","TPCsub2rpH2uc","TPC reaction plane sub2;TPCsub2rpH2uc", | |
481 | 100,-2.,2., | |
482 | AliDielectronVarManager::kTPCsub2rpH2uc); | |
483 | histos->UserHistogram("Event","TPCsub12DiffH2uc","TPC reaction plane difference;TPCsub12DiffH2uc", | |
484 | 100,-1.,1., | |
485 | AliDielectronVarManager::kTPCsub12DiffH2uc); | |
486 | */ | |
487 | histos->UserHistogram("Event","V0ACrpH2","VZERO-AC RP; #Psi_{2}^{V0AC} (rad.)", | |
488 | 100,-2.0,2.0, | |
489 | AliDielectronVarManager::kV0ACrpH2); | |
490 | histos->UserHistogram("Event","V0ArpH2","VZERO-A RP; #Psi_{2}^{V0A} (rad.)", | |
491 | 100,-2.0,2.0, | |
492 | AliDielectronVarManager::kV0ArpH2); | |
493 | histos->UserHistogram("Event","V0CrpH2","VZERO-C RP; #Psi_{2}^{V0C} (rad.)", | |
494 | 100,-2.0,2.0, | |
495 | AliDielectronVarManager::kV0CrpH2); | |
187de573 | 496 | |
8c06b662 | 497 | histos->UserHistogram("Event","V0ATPCDiffH2","VZERO-A TPC diff; cos(2(#Psi^{V0A}-#Psi^{TPC}))", |
498 | 300,-1.0,1.0, | |
499 | AliDielectronVarManager::kV0ATPCDiffH2); | |
500 | histos->UserHistogram("Event","V0CTPCDiffH2","VZERO-C TPC diff; cos(2(#Psi^{V0C}-#Psi^{TPC}))", | |
501 | 300,-1.0,1.0, | |
502 | AliDielectronVarManager::kV0CTPCDiffH2); | |
503 | histos->UserHistogram("Event","V0AV0CDiffH2","VZERO-A VZERO-C diff; cos(2(#Psi^{V0A}-#Psi^{V0C}))", | |
504 | 300,-1.0,1.0, | |
505 | AliDielectronVarManager::kV0AV0CDiffH2); | |
187de573 | 506 | |
8c06b662 | 507 | // centrality dependent event plane histograms |
508 | histos->UserHistogram("Event","Cent_TPCrpH2","TPC RP;centrality (%);#Psi^{TPC} (rad.)", | |
509 | 10,0.,100.,100,-2.,2., | |
510 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCrpH2); | |
511 | histos->UserHistogram("Event","Cent_TPCsub1rpH2","TPC-1 RP;centrality (%);#Psi^{sub1} (rad.)", | |
512 | 10,0.,100.,100,-2.,2., | |
513 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub1rpH2); | |
514 | histos->UserHistogram("Event","Cent_TPCsub2rpH2","TPC-2 RP;centrality (%);#Psi^{sub2} (rad.)", | |
515 | 10,0.,100.,100,-2.,2., | |
516 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub2rpH2); | |
187de573 | 517 | |
8c06b662 | 518 | histos->UserHistogram("Event","Cent_V0ACrpH2","VZERO-AC RP;centrality (%);#Psi_{2}^{V0AC} (rad.)", |
519 | 10,0.,100.,100,-2.0,2.0, | |
520 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ACrpH2); | |
521 | histos->UserHistogram("Event","Cent_V0ArpH2","VZERO-A RP;centrality (%);#Psi_{2}^{V0A} (rad.)", | |
522 | 10,0.,100.,100,-2.0,2.0, | |
523 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ArpH2); | |
524 | histos->UserHistogram("Event","Cent_V0CrpH2","VZERO-C RP;centrality (%);#Psi_{2}^{V0C} (rad.)", | |
525 | 10,0.,100.,100,-2.0,2.0, | |
526 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0CrpH2); | |
527 | // for resolution calculation | |
528 | histos->UserHistogram("Event","Cent_V0ATPCDiffH2","VZERO-A TPC diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{TPC}))", | |
529 | 10,0.,100.,300,-1.0,1.0, | |
530 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0ATPCDiffH2); | |
531 | histos->UserHistogram("Event","Cent_V0CTPCDiffH2","VZERO-C TPC diff;centrality (%);cos(2(#Psi^{V0C}-#Psi^{TPC}))", | |
532 | 10,0.,100.,300,-1.0,1.0, | |
533 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0CTPCDiffH2); | |
534 | histos->UserHistogram("Event","Cent_V0AV0CDiffH2","VZERO-A VZERO-C diff;centrality (%);cos(2(#Psi^{V0A}-#Psi^{V0C}))", | |
535 | 10,0.,100.,300,-1.0,1.0, | |
536 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kV0AV0CDiffH2); | |
537 | histos->UserHistogram("Event","Cent_TPCsub12DiffH2","TPC-sub1 TPC-sub2 diff;centrality (%);cos(2(#Psi^{sub1}-#Psi^{sub2}))", | |
538 | 10,0.,100.,300,-1.0,1.0, | |
539 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2); | |
540 | // detector effects | |
541 | histos->UserHistogram("Event","Cent_TPCsub12DiffH2Sin","TPC-sub1 TPC-sub2 diff;centrality (%);sin(2(#Psi^{sub1}-#Psi^{sub2}))", | |
542 | 10,0.,100.,300,-1.0,1.0,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsub12DiffH2Sin); | |
187de573 | 543 | |
544 | // EPSelectionTask V0 information directly from the ESDs | |
8c06b662 | 545 | histos->UserHistogram("Event","Cent_v0ACrpH2","VZERO-AC RP;centrality (%);#Psi_{2}^{v0AC} (rad.)", |
546 | 10,0.,100.,100,-2.0,2.0, | |
547 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ACrpH2); | |
548 | histos->UserHistogram("Event","Cent_v0ArpH2","VZERO-A RP;centrality (%);#Psi_{2}^{v0A} (rad.)", | |
549 | 10,0.,100.,100,-2.0,2.0, | |
550 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ArpH2); | |
551 | histos->UserHistogram("Event","Cent_v0CrpH2","VZERO-C RP;centrality (%);#Psi_{2}^{v0C} (rad.)", | |
552 | 10,0.,100.,100,-2.0,2.0, | |
553 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CrpH2); | |
554 | // for resolution calculation | |
555 | histos->UserHistogram("Event","Cent_v0ATPCDiffH2","VZERO-A TPC diff;centrality (%);cos(2(#Psi^{v0A}-#Psi^{TPC}))", | |
556 | 10,0.,100.,300,-1.0,1.0, | |
557 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0ATPCDiffH2); | |
558 | histos->UserHistogram("Event","Cent_v0CTPCDiffH2","VZERO-C TPC diff;centrality (%);cos(2(#Psi^{v0C}-#Psi^{TPC}))", | |
559 | 10,0.,100.,300,-1.0,1.0, | |
560 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0CTPCDiffH2); | |
561 | histos->UserHistogram("Event","Cent_v0Av0CDiffH2","VZERO-A VZERO-C diff;centrality (%);cos(2(#Psi^{v0A}-#Psi^{v0C}))", | |
562 | 10,0.,100.,300,-1.0,1.0, | |
563 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kv0Av0CDiffH2); | |
187de573 | 564 | |
8c06b662 | 565 | } |
187de573 | 566 | |
8c06b662 | 567 | ////// MONTE CARLO ////// |
568 | /* | |
187de573 | 569 | if(cutDefinition == kTOFTRD && hasMC) { |
8c06b662 | 570 | histos->AddClass("MCEvent"); |
571 | histos->UserHistogram("MCEvent","Cent_NJPsis","Centrality vs. generated incl. J/#psi per event;centrality (%);N_{J/#psi}", | |
187de573 | 572 | 10,0.,100., 21,-0.5,20.5, |
573 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kNumberOfJPsis); | |
574 | } | |
8c06b662 | 575 | */ |
187de573 | 576 | |
8c06b662 | 577 | //Initialise histogram classes |
578 | histos->SetReservedWords("Track;Pair"); | |
187de573 | 579 | |
8c06b662 | 580 | //Pair classes |
581 | // to fill also mixed event histograms loop until 10 | |
582 | for (Int_t i=0; i<3; ++i){ | |
583 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); | |
584 | } | |
187de573 | 585 | |
8c06b662 | 586 | if(cutDefinition < kEtaGap01) { |
187de573 | 587 | |
8c06b662 | 588 | //legs from pair |
589 | for (Int_t i=0; i<3; ++i){ | |
590 | histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i))); | |
591 | } | |
187de573 | 592 | |
8c06b662 | 593 | //Track classes |
594 | //to fill also track info from 2nd event loop until 2 | |
595 | for (Int_t i=0; i<2; ++i){ | |
596 | histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); | |
597 | } | |
8c06b662 | 598 | //track rotation |
599 | // histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot))); | |
600 | // histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot))); | |
187de573 | 601 | |
602 | ///// add histograms to Track classes ///// | |
603 | ||
604 | // Vertex | |
605 | histos->UserHistogram("Track","ImpactParXY",";dXY (cm);#tracks", 500,-1.,1., | |
8c06b662 | 606 | AliDielectronVarManager::kImpactParXY); |
187de573 | 607 | histos->UserHistogram("Track","ImpactParZ",";dZ (cm);#tracks", 600,-3.,3., |
8c06b662 | 608 | AliDielectronVarManager::kImpactParZ); |
187de573 | 609 | |
610 | // Kinematics | |
611 | histos->UserHistogram("Track","Pt",";p_{T} (GeV/c);#tracks", 400,0,20., | |
612 | AliDielectronVarManager::kPt); | |
613 | histos->UserHistogram("Track","Eta_Phi",";#eta;#varphi;#tracks", 200,-1,1,200,0,6.285, | |
8c06b662 | 614 | AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); |
187de573 | 615 | |
616 | // TPC | |
617 | histos->UserHistogram("Track","TPCnCls",";N_{cls}^{TPC};#tracks", 160,-0.5,159.5, | |
8c06b662 | 618 | AliDielectronVarManager::kNclsTPC); |
187de573 | 619 | histos->UserHistogram("Track","TPCsignalN",";N_{cls}^{TPC};#tracks", 160,-0.5,159.5, |
620 | AliDielectronVarManager::kTPCsignalN); | |
621 | histos->UserHistogram("Track","NclFr",";N_{max.cls}^{TPC};#tracks", 160,-0.5,159.5, | |
8c06b662 | 622 | AliDielectronVarManager::kNFclsTPCr); |
187de573 | 623 | histos->UserHistogram("Track","Ncl_NclFr",";N_{cls}^{TPC};N_{max.cls}^{TPC};#tracks", |
8c06b662 | 624 | 160,-0.5,159.5,160,-0.5,159.5, |
625 | AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr); | |
187de573 | 626 | |
627 | // TRD | |
628 | histos->UserHistogram("Track","NtrklTRD",";N_{trkl}^{TRD};#tracks", | |
8c06b662 | 629 | 8,-0.5,7.5, |
630 | AliDielectronVarManager::kTRDpidQuality); | |
187de573 | 631 | |
632 | // PID | |
633 | histos->UserHistogram("Track","dEdx_P",";p (GeV/c);TPC signal (arb units);#tracks", | |
634 | 400,0.2,20.,200,0.,200., | |
635 | AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
636 | histos->UserHistogram("Track","TPCnSigmaEle_P","p (GeV/c);n#sigma_{ele}^{TPC};#tracks", | |
637 | 400,0.2,20.,200,-10.,10., | |
638 | AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
779267ed | 639 | histos->UserHistogram("Track","TOFbeta_P",";p (GeV/c);#beta;#tracks", |
640 | 250,0.0,5.0,300,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,kTRUE); | |
187de573 | 641 | |
642 | ///// add histograms to Pair classes ///// | |
643 | histos->UserHistogram("Pair","InvMass",";m_{ee} (GeV/c^{2});#pairs", | |
d28542ba | 644 | 300,.0,300*0.04, AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2 |
187de573 | 645 | histos->UserHistogram("Pair","Rapidity",";y;#pairs", |
d28542ba | 646 | 100,-1.,1., AliDielectronVarManager::kY); |
187de573 | 647 | histos->UserHistogram("Pair","OpeningAngle","opening angle (rad.);#pairs", |
d28542ba | 648 | 100,0.,3.15, AliDielectronVarManager::kOpeningAngle); |
187de573 | 649 | histos->UserHistogram("Pair","Chi2NDF",";#chi^{2}/NDF;#pairs", |
d28542ba | 650 | 100,0.,20, AliDielectronVarManager::kChi2NDF); |
187de573 | 651 | histos->UserHistogram("Pair","PsiPair",";#psi;#pairs", |
d28542ba | 652 | 100,0.,3.15, AliDielectronVarManager::kPsiPair); |
187de573 | 653 | histos->UserHistogram("Pair","R",";r (cm)", |
d28542ba | 654 | 200,0.,100., AliDielectronVarManager::kR); |
655 | histos->UserHistogram("Pair","LegDist",";dca (cm)", | |
656 | 50,0.,5., AliDielectronVarManager::kLegDist); | |
657 | histos->UserHistogram("Pair","LegDistXY",";dca_{xy} (cm)", | |
658 | 50,0.,5., AliDielectronVarManager::kLegDistXY); | |
187de573 | 659 | |
8c06b662 | 660 | } |
187de573 | 661 | |
8c06b662 | 662 | //// FLOW results use tprofiles |
187de573 | 663 | if(cutDefinition == kTOFTRD || cutDefinition == kTOF || cutDefinition >= kEtaGap01) { |
664 | ||
8c06b662 | 665 | histos->UserProfile("Pair","M_Cent_Pt_V0ACrpH2FlowV2", |
666 | "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)", | |
667 | AliDielectronVarManager::kV0ACrpH2FlowV2, | |
668 | 125,0.,125*.04, 10, 0.,100., 200,0.,100., | |
669 | AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt); | |
187de573 | 670 | |
8c06b662 | 671 | histos->UserProfile("Pair","M_Cent_Pt_V0ArpH2FlowV2", |
672 | "cos(2(#varphi-#Psi^{V0A}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)", | |
673 | AliDielectronVarManager::kV0ArpH2FlowV2, | |
674 | 125,0.,125*.04, 10, 0.,100., 200,0.,100., | |
675 | AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt); | |
187de573 | 676 | |
8c06b662 | 677 | histos->UserProfile("Pair","M_Cent_Pt_V0CrpH2FlowV2", |
678 | "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)", | |
679 | AliDielectronVarManager::kV0CrpH2FlowV2, | |
680 | 125,0.,125*.04, 10, 0.,100., 200,0.,100., | |
681 | AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt); | |
d28542ba | 682 | |
683 | histos->UserProfile("Pair","M_Cent_Pt_v0ACrpH2FlowV2", | |
684 | "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)", | |
685 | AliDielectronVarManager::kv0ACrpH2FlowV2, | |
686 | 125,0.,125*.04, 10, 0.,100., 200,0.,100., | |
687 | AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt); | |
187de573 | 688 | |
d28542ba | 689 | histos->UserProfile("Pair","M_Cent_Pt_v0ArpH2FlowV2", |
690 | "cos(2(#varphi-#Psi^{V0A}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)", | |
691 | AliDielectronVarManager::kv0ArpH2FlowV2, | |
692 | 125,0.,125*.04, 10, 0.,100., 200,0.,100., | |
693 | AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt); | |
187de573 | 694 | |
d28542ba | 695 | histos->UserProfile("Pair","M_Cent_Pt_v0CrpH2FlowV2", |
696 | "cos(2(#varphi-#Psi^{V0C}));mass (GeV/c^{2});centrality (%);p_{T} (GeV/c)", | |
697 | AliDielectronVarManager::kv0CrpH2FlowV2, | |
698 | 125,0.,125*.04, 10, 0.,100., 200,0.,100., | |
699 | AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kPt); | |
187de573 | 700 | |
701 | // 1D control histos | |
702 | /* | |
8c06b662 | 703 | histos->UserProfile("Pair","M_V0ACrpH2FlowV2", |
704 | "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})", | |
705 | AliDielectronVarManager::kV0ACrpH2FlowV2, | |
706 | 125,0.,125*.04, | |
707 | AliDielectronVarManager::kM); | |
187de573 | 708 | |
8c06b662 | 709 | histos->UserProfile("Pair","M_V0ArpH2FlowV2", |
710 | "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})", | |
711 | AliDielectronVarManager::kV0ArpH2FlowV2, | |
712 | 125,0.,125*.04, | |
713 | AliDielectronVarManager::kM); | |
187de573 | 714 | |
8c06b662 | 715 | histos->UserProfile("Pair","M_V0CrpH2FlowV2", |
716 | "cos(2(#varphi-#Psi^{V0AC}));mass (GeV/c^{2})", | |
717 | AliDielectronVarManager::kV0CrpH2FlowV2, | |
718 | 125,0.,125*.04, | |
719 | AliDielectronVarManager::kM); | |
187de573 | 720 | */ |
721 | } | |
722 | ||
8c06b662 | 723 | die->SetHistogramManager(histos); |
724 | } | |
725 | ||
443a091c | 726 | void InitHF(AliDielectron* die, Int_t cutDefinition) |
727 | { | |
728 | // | |
4d7704c5 | 729 | // Setup the HF arrays |
443a091c | 730 | // |
443a091c | 731 | |
732 | AliDielectronHF *hf=new AliDielectronHF(die->GetName(),die->GetTitle()); | |
187de573 | 733 | // if(hasMC) hf->SetStepForMCGenerated(); |
443a091c | 734 | hf->SetPairTypes(AliDielectronHF::kAll); |
735 | hf->SetVariable(AliDielectronVarManager::kM, 125, 0.0, 0.04*125); | |
187de573 | 736 | |
3e831a33 | 737 | hf->AddCutVariable(AliDielectronVarManager::kCentrality, "0.,5.,10.,20.,40.,50.,60.,80." ); |
738 | hf->AddCutVariable(AliDielectronVarManager::kPt, "0.,2.5,5.,100." ); | |
66c684fd | 739 | hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, 8,-1.*TMath::Pi(),TMath::Pi()); |
779267ed | 740 | // hf->AddCutVariable(AliDielectronVarManager::kY, 1, -0.9, 0.9 ); |
187de573 | 741 | // hf->AddCutVariable(AliDielectronVarManager::kPt, "0.8, 1.0, 1.1, 1.2, 1.5, 100.0", kTRUE, AliDielectronHF::kBinToMax); |
779267ed | 742 | // hf->AddCutVariable(AliDielectronVarManager::kNclsTPC, "70,90,100,120,160", kTRUE, AliDielectronHF::kBinToMax); |
743 | // hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaEle,"-4,-3,-2.5,-2,2,2.5,3,4", kTRUE, AliDielectronHF::kSymBin); | |
744 | //hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaPio,"3.,3.5,4.,100.", kTRUE, AliDielectronHF::kBinToMax); | |
745 | //hf->AddCutVariable(AliDielectronVarManager::kITSLayerFirstCls,4,0.,4., kFALSE, kTRUE, AliDielectronHF::kBinFromMin); | |
187de573 | 746 | //hf->AddCutVariable(AliDielectronVarManager::kNclsITS, 5,2.,7., kFALSE, kTRUE, AliDielectronHF::kBinToMax); |
747 | //hf->AddCutVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers()); | |
4d7704c5 | 748 | |
443a091c | 749 | die->SetHistogramArray(hf); |
750 | } | |
8c06b662 | 751 | |
752 | void InitCF(AliDielectron* die, Int_t cutDefinition) | |
753 | { | |
754 | // | |
755 | // Setup the CF Manager if needed | |
756 | // | |
3c59f53e | 757 | |
187de573 | 758 | AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle()); |
3c59f53e | 759 | |
760 | // event variables | |
761 | cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.,10.,20.,40.,50.,60.,80."); | |
762 | // if(!hasMC) cf->AddVariable(AliDielectronVarManager::kZvPrim,20, -10., 10.); | |
763 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc,20,0.,3000.0); | |
764 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib,20,0.,4000.); | |
765 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers() ); | |
766 | ||
8c06b662 | 767 | // pair variables |
3c59f53e | 768 | // cf->AddVariable(AliDielectronVarManager::kY,"-0.8,0.8"); |
8c06b662 | 769 | cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps |
3c59f53e | 770 | cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11); |
771 | cf->AddVariable(AliDielectronVarManager::kPt,"0., 1., 2.5, 5., 100.0"); | |
772 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01); | |
773 | // if(hasMC) cf->AddVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.); | |
774 | ||
e0f6eeb2 | 775 | // flow variables |
776 | cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2,4,-1.*TMath::Pi(),TMath::Pi()); | |
777 | cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2,4,-1.*TMath::Pi(),TMath::Pi()); | |
d28542ba | 778 | |
3c59f53e | 779 | // leg variables |
780 | cf->AddVariable(AliDielectronVarManager::kPt,"0.8, 1.0, 1.1, 1.2, 1.5, 100.0",kTRUE); | |
781 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,0.9",kTRUE); | |
e0f6eeb2 | 782 | // cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE); |
3c59f53e | 783 | // cf->AddVariable(AliDielectronVarManager::kNclsITS,"1,2,3,4,5,6",kTRUE); |
784 | cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE); | |
785 | cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"2.5,3.0,3.5,4.0,4.5,100",kTRUE); | |
786 | cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE); | |
787 | // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,5.0,100",kTRUE); | |
788 | // cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE); break; | |
789 | // cf->AddVariable(AliDielectronVarManager::kTRDpidQuality,"3.5, 4.5, 5.5, 6.5",kTRUE); | |
790 | // if(!hasMC && isESD) cf->AddVariable(AliDielectronVarManager::kTRDchi2,"-1.,0.,2.,4.",kTRUE); | |
e0f6eeb2 | 791 | |
3c59f53e | 792 | // mc steps |
8c06b662 | 793 | if(hasMC) { |
f5daa827 | 794 | if(cutDefinition==kTOFTRD) cf->SetStepForMCtruth(); |
e0f6eeb2 | 795 | cf->SetStepsForMCtruthOnly(); |
796 | // cf->SetStepsForBackground(); | |
8c06b662 | 797 | } |
e0f6eeb2 | 798 | |
8c06b662 | 799 | die->SetCFManagerPair(cf); |
800 | } | |
801 | ||
802 | void AddMCSignals(AliDielectron *die){ | |
803 | //Do we have an MC handler? | |
8c06b662 | 804 | if (!hasMC) return; |
805 | ||
806 | AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi"); | |
807 | inclusiveJpsi->SetLegPDGs(11,-11); | |
808 | inclusiveJpsi->SetMotherPDGs(443,443); | |
809 | inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
810 | inclusiveJpsi->SetFillPureMCStep(kTRUE); | |
811 | inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
812 | inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
813 | die->AddSignalMC(inclusiveJpsi); | |
814 | ||
815 | AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays) | |
816 | promptJpsi->SetLegPDGs(11,-11); | |
817 | promptJpsi->SetMotherPDGs(443,443); | |
818 | promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
819 | promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
820 | promptJpsi->SetFillPureMCStep(kTRUE); | |
821 | promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
822 | promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
823 | promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
824 | promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
825 | die->AddSignalMC(promptJpsi); | |
826 | ||
827 | AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty J/psi"); | |
828 | beautyJpsi->SetLegPDGs(11,-11); | |
829 | beautyJpsi->SetMotherPDGs(443,443); | |
830 | beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
831 | beautyJpsi->SetGrandMotherPDGs(500,500); | |
832 | beautyJpsi->SetFillPureMCStep(kTRUE); | |
833 | beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
834 | beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
835 | beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
836 | die->AddSignalMC(beautyJpsi); | |
837 | ||
838 | AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct J/psi"); // embedded J/psi | |
839 | directJpsi->SetLegPDGs(11,-11); | |
840 | directJpsi->SetMotherPDGs(443,443); | |
841 | directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
842 | directJpsi->SetFillPureMCStep(kTRUE); | |
843 | directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
844 | directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect); | |
845 | directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
846 | directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
847 | die->AddSignalMC(directJpsi); | |
d28542ba | 848 | |
849 | AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionElePairs","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions) | |
850 | conversionElePairs->SetLegPDGs(11,-11); | |
851 | conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
852 | conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary); | |
853 | conversionElePairs->SetMotherPDGs(22,22); | |
187de573 | 854 | // die->AddSignalMC(conversionElePairs); |
8c06b662 | 855 | } |
856 | ||
857 | void SetEtaCorrection() | |
858 | { | |
859 | if (AliDielectronPID::GetEtaCorrFunction()) return; | |
860 | ||
8c06b662 | 861 | TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root"; |
862 | TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); | |
d41e5a99 | 863 | if (trainRoot.IsNull()) etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root"; |
8c06b662 | 864 | if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){ |
865 | Error("ConfigPbPb","Eta map not found: %s",etaMap.Data()); | |
866 | return; | |
867 | } | |
868 | ||
869 | TFile f(etaMap.Data()); | |
870 | if (!f.IsOpen()) return; | |
871 | TList *keys=f.GetListOfKeys(); | |
872 | ||
873 | for (Int_t i=0; i<keys->GetEntries(); ++i){ | |
874 | TString kName=keys->At(i)->GetName(); | |
875 | TPRegexp reg(kName); | |
876 | if (reg.MatchB(list)){ | |
256b2ae5 | 877 | printf(" Using Eta Correction Function: %s\n",kName.Data()); |
8c06b662 | 878 | AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data())); |
879 | } | |
880 | } | |
881 | } | |
882 | ||
883 | TVectorD *GetRunNumbers() { | |
d28542ba | 884 | |
885 | Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai | |
886 | 139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137230, 137162, 137161, 137135 | |
8c06b662 | 887 | }; |
888 | ||
d28542ba | 889 | Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai |
256b2ae5 | 890 | 170593, 170572, 170388, 170387, 170315, 170313, 170312, 170311, 170309, 170308, 170306, 170270, 170269, 170268, 170230, 170228, 170207, 170204, 170203, 170193, 170163, 170159, 170155, 170091, 170089, 170088, 170085, 170084, 170083, 170081, 170040, 170027, 169965, 169923, 169859, 169858, 169855, 169846, 169838, 169837, 169835, 169591, 169590, 169588, 169587, 169586, 169557, 169555, 169554, 169553, 169550, 169515, 169512, 169506, 169504, 169498, 169475, 169420, 169419, 169418, 169417, 169415, 169411, 169238, 169167, 169160, 169156, 169148, 169145, 169144, 169138, 169099, 169094, 169091, 169045, 169044, 169040, 169035, 168992, 168988, 168826, 168777, 168514, 168512, 168511, 168467, 168464, 168460, 168458, 168362, 168361, 168342, 168341, 168325, 168322, 168311, 168310, 168115, 168108, 168107, 168105, 168076, 168069, 167988, 167987, 167985, 167920, 167915 |
d28542ba | 891 | }; |
892 | ||
893 | // selection via environement variable (works only for gsi trains) | |
2d7910f3 | 894 | |
8c06b662 | 895 | |
2d7910f3 | 896 | if(list.Contains("LHC10h") || list.Contains("LHC11a10")) { |
d28542ba | 897 | Int_t size = (int) (sizeof(runLHC10h)/sizeof(Double_t)); |
898 | TVectorD *vec = new TVectorD(size+1); | |
899 | ||
900 | (*vec)[size] = runLHC10h[0] + 1; | |
901 | for (int i = 0; i < size; i++) { | |
902 | (*vec)[i] = runLHC10h[size-1-i]; | |
903 | } | |
904 | // vec->Print(""); | |
905 | return vec; | |
906 | } | |
8c06b662 | 907 | |
2d7910f3 | 908 | if( list.Contains("LHC11h") || list.Contains("LHC12a17") ) { |
d28542ba | 909 | |
910 | Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t)); | |
911 | TVectorD *vec = new TVectorD(size+1); | |
912 | ||
913 | (*vec)[size] = runLHC11h[0] + 1; | |
914 | for (int i = 0; i < size; i++) { | |
915 | (*vec)[i] = runLHC11h[size-1-i]; | |
916 | } | |
917 | // vec->Print(""); | |
918 | return vec; | |
919 | } | |
256b2ae5 | 920 | |
921 | TVectorD *vec = new TVectorD(2); | |
922 | (*vec)[0] = 0; | |
923 | (*vec)[0] = 1; | |
924 | return vec; | |
d28542ba | 925 | |
8c06b662 | 926 | } |