]>
Commit | Line | Data |
---|---|---|
8c06b662 | 1 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); |
2d109362 JB |
2 | void AddQAHistsPID(AliDielectron *die); |
3 | void AddQAHistsEP(AliDielectron *die); | |
6720a01a | 4 | void AddQAHistsEff(AliDielectron *die); |
2d109362 JB |
5 | void AddHistsEleEff(AliDielectron *die); |
6 | ||
8c06b662 | 7 | void InitCF(AliDielectron* die, Int_t cutDefinition); |
443a091c | 8 | void InitHF(AliDielectron* die, Int_t cutDefinition); |
8c06b662 | 9 | |
2ed1b6ff | 10 | void SetupEventCuts(AliDielectron *die, ULong64_t triggers, Int_t cutDefinition); |
8c06b662 | 11 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition); |
2ed1b6ff | 12 | void SetupV0Cuts( AliDielectron *die, Int_t cutDefinition); |
13 | void SetupPairCuts( AliDielectron *die, Int_t cutDefinition); | |
14 | ||
15 | void ConfigEvtPlane(AliDielectron *die, Int_t cutDefinition); | |
16 | void ConfigBgrd( AliDielectron *die, Int_t cutDefinition); | |
8c06b662 | 17 | |
79284309 | 18 | void AddMCSignals(AliDielectron *die, Int_t cutDefinition); |
6720a01a | 19 | void SetEtaCorrection(AliDielectron *die); |
79284309 | 20 | TVectorD *GetRunNumbers2011(); |
2d109362 | 21 | TVectorD *GetPDGcodes(); |
2ed1b6ff | 22 | TVectorD *GetDeltaPhiBins(); |
8c06b662 | 23 | |
6720a01a | 24 | TString names=("Event;NoCut;PIDqa;LegEff;Std;SysMC;Flow;avgPt;Rec;TPC;TOF;TRD;TPC-TOF-TRD;NOPID;SysPt;SysEta;SysEle;SysPro;SysSPD;SysMCele"); |
25 | enum { kEvent, // event quantities (mult, ep, trigger, ...) | |
26 | kNoCut, // pure event quantities (mult, ep, trigger, ...) | |
27 | kPIDqa, // post calibration and validation of TPC PID | |
28 | kLegEff, // single electron efficiency calculation | |
29 | kStd, // standard Raa analysis | |
30 | kSysMC, | |
31 | kFlow, // flow calculation | |
32 | kAvgPt, // mean pt and pt^2 analysis | |
33 | kRec, // to calculate partial efficiencies, in particular the geom. acceptance | |
34 | kTPC, | |
35 | kTOF, | |
36 | kTRD, | |
37 | kTPCTOFTRD, | |
38 | kNoPID, | |
39 | kSysPt, | |
40 | kSysEta, | |
41 | kSysEle, | |
42 | kSysPro, | |
43 | kSysSPD, | |
44 | kSysMCele, | |
45 | kPIDQA | |
46 | }; | |
8c06b662 | 47 | |
48 | TObjArray *arrNames=names.Tokenize(";"); | |
49 | const Int_t nDie=arrNames->GetEntries(); | |
50 | ||
256b2ae5 | 51 | Bool_t isESD = kTRUE; |
2d7910f3 | 52 | TString list = gSystem->Getenv("LIST"); |
6938ad55 | 53 | |
ab5dc7f9 | 54 | AliDielectron* ConfigJpsi_jb_PbPb(Int_t cutDefinition, Bool_t hasMC=kFALSE, ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB) |
8c06b662 | 55 | { |
56 | // | |
57 | // Setup the instance of AliDielectron | |
58 | // | |
187de573 | 59 | |
2ed1b6ff | 60 | // gsi train? |
61 | TString trainRoot = gSystem->Getenv("TRAIN_ROOT"); | |
62 | Bool_t isGSItrain = (trainRoot.IsNull()?kFALSE:kTRUE); | |
ab5dc7f9 | 63 | if(isGSItrain) { |
64 | // find mc or not? | |
65 | if( list.IsNull()) list=prod; | |
66 | if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE; | |
2d109362 | 67 | if( list.Contains("LHC11a10") || list.Contains("LHC12a17") || list.Contains("LHC13c7")) hasMC=kTRUE; |
ab5dc7f9 | 68 | } |
8c06b662 | 69 | |
70 | //ESD handler? | |
256b2ae5 | 71 | isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()); |
187de573 | 72 | |
2ed1b6ff | 73 | // task name |
8c06b662 | 74 | TString name=Form("%02d",cutDefinition); |
2ed1b6ff | 75 | if (cutDefinition<arrNames->GetEntriesFast()) name=arrNames->At(cutDefinition)->GetName(); |
76 | printf(" Adding %s%s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?" MC":""),name.Data(),list.Data()); | |
77 | ||
78 | // init AliDielectron | |
ab5dc7f9 | 79 | AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("%s",name.Data())); |
0094dcc0 | 80 | die->SetHasMC(hasMC); |
81 | ||
79284309 | 82 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
2ed1b6ff | 83 | SetupEventCuts(die,triggers,cutDefinition); |
359a5e52 | 84 | SetupTrackCuts(die,cutDefinition); |
6720a01a | 85 | SetupV0Cuts(die,cutDefinition); |
ab5dc7f9 | 86 | SetupPairCuts(die,cutDefinition); |
256b2ae5 | 87 | |
79284309 | 88 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MISC vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
2ed1b6ff | 89 | // Monte Carlo Signals |
6720a01a | 90 | AddMCSignals(die, cutDefinition); |
2d109362 | 91 | // PID post calibartion |
6720a01a | 92 | // if(cutDefinition!=kEvent && cutDefinition!=kLegEff) SetEtaCorrection(die); |
8c06b662 | 93 | // bgrd estimators |
6720a01a | 94 | //ConfigBgrd(die,cutDefinition); |
2ed1b6ff | 95 | // tpc event plane configuration |
6720a01a | 96 | //ConfigEvtPlane(die,cutDefinition); |
97 | // prefilter settings NEW | |
98 | // if(cutDefinition==kNoCut ||cutDefinition==kEvent || cutDefinition==kNoPID || cutDefinition==kPIDqa || cutDefinition==kLegEff) | |
79284309 | 99 | die->SetNoPairing(); |
6720a01a | 100 | // else |
101 | // die->SetPreFilterAllSigns(); | |
79284309 | 102 | //die->SetPreFilterUnlikeOnly(); |
103 | // load single electron effieciency map ATTENTION | |
6720a01a | 104 | if(cutDefinition==kAvgPt) die->InitLegEffMap("alien:///alice/cern.ch/user/j/jbook/PWGDQ/dielectron/files/effMap.root"); |
105 | ||
187de573 | 106 | |
79284309 | 107 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv OUTPUT vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
108 | // histogram setup | |
109 | InitHistograms(die,cutDefinition); | |
110 | // histogram grid setup | |
2d109362 | 111 | InitHF(die,cutDefinition); |
79284309 | 112 | // CF container setup |
2d109362 | 113 | InitCF(die,cutDefinition); |
187de573 | 114 | |
79284309 | 115 | // cut QA |
116 | die->SetCutQA(); | |
187de573 | 117 | |
8c06b662 | 118 | return die; |
119 | } | |
120 | ||
423cc7ef | 121 | //______________________________________________________________________________________ |
2ed1b6ff | 122 | void SetupEventCuts(AliDielectron *die, ULong64_t triggers, Int_t cutDefinition) |
423cc7ef | 123 | { |
124 | // | |
125 | // Setup the event cuts | |
126 | // | |
127 | ||
90c1ae2d | 128 | // trigger specific centrality cuts (reject trigger inefficiencies) |
129 | Double_t minCent=0.0, maxCent=100.; | |
ab5dc7f9 | 130 | if(!die->GetHasMC()) { |
90c1ae2d | 131 | switch(triggers) { |
79284309 | 132 | // case AliVEvent::kCentral: minCent= 0.; maxCent=10.; break; //0-9 |
133 | // case AliVEvent::kSemiCentral: minCent=10.; maxCent=50.; break; //12-53 | |
134 | // case AliVEvent::kMB: minCent=10.; maxCent=90.; break; | |
135 | default: minCent= 0.; maxCent=90.; break; | |
90c1ae2d | 136 | } |
137 | } | |
2ed1b6ff | 138 | // if(cutDefinition >= kEtaGap01) {minCent=20.; maxCent=50.;} // v2 analysis |
2d109362 JB |
139 | if(cutDefinition == kSysMC) {minCent=0.; maxCent=50.;} |
140 | if(cutDefinition == kSysMCele) {minCent=0.; maxCent=50.;} | |
2ed1b6ff | 141 | |
142 | // VZERO multiplicity vs. number ob global tracks cut | |
143 | TF1 *fMean = new TF1("fMean", "pol1", 0,25e+3); | |
144 | fMean->SetParameters(691.633, 1.4892); | |
145 | TF1 *fSigma = new TF1("fSigma","[0]+sqrt([1]*x+[2])",0,25e+3); | |
146 | fSigma->SetParameters(-83.6599, 36.7677, 69530.7); | |
90c1ae2d | 147 | |
2d109362 | 148 | AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("vertex","vertex"); |
423cc7ef | 149 | if(!isESD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny); |
150 | eventCuts->SetRequireVertex(); | |
151 | eventCuts->SetMinVtxContributors(1); | |
6720a01a | 152 | if(cutDefinition!=kNoCut) eventCuts->SetVertexZ(-10.,+10.); |
90c1ae2d | 153 | eventCuts->SetCentralityRange(minCent,maxCent); |
1c96a71e | 154 | // eventCuts->SetCutOnV0MultipicityNTrks(fMean, fSigma, 4.0); |
2d109362 | 155 | // eventCuts->SetRunRejection(AliDielectronHelper::MakeArbitraryBinning("170592,170593,170594")); |
423cc7ef | 156 | eventCuts->Print(); |
157 | die->GetEventFilter().AddCuts(eventCuts); | |
158 | ||
159 | } | |
160 | ||
8c06b662 | 161 | //______________________________________________________________________________________ |
162 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition) | |
163 | { | |
164 | // | |
165 | // Setup the track cuts | |
166 | // | |
79284309 | 167 | Bool_t hasMC=die->GetHasMC(); |
9dcb603f | 168 | |
8c06b662 | 169 | // Quality cuts |
79284309 | 170 | // die->GetTrackFilter().AddCuts(cuts); |
187de573 | 171 | |
ab5dc7f9 | 172 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv FILTER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
bffbeda1 | 173 | // AOD track filter (needs to be first cut to speed up) |
6720a01a | 174 | AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("filter","filter"); |
175 | // config specific cuts | |
176 | switch(cutDefinition) { | |
177 | case kPIDqa: trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual); break; | |
178 | default: trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqualSPDany); | |
179 | } | |
bffbeda1 | 180 | // trkFilter->SetMinNCrossedRowsOverFindable(0.6); |
4a1bef93 | 181 | |
ab5dc7f9 | 182 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TRACK CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
79284309 | 183 | AliDielectronVarCuts *varAccCuts = new AliDielectronVarCuts("acc","acc"); |
184 | AliDielectronCutGroup *grpRecCuts = new AliDielectronCutGroup("rec","rec",AliDielectronCutGroup::kCompAND); | |
185 | AliDielectronVarCuts *varRecCuts = new AliDielectronVarCuts("VarRecCuts","VarRecCuts"); | |
186 | AliDielectronTrackCuts *trkRecCuts = new AliDielectronTrackCuts("TrkRecCuts","TrkRecCuts"); | |
187 | ||
ab5dc7f9 | 188 | // config specific cuts |
189 | switch(cutDefinition) { | |
2d109362 | 190 | case kPIDqa: |
6720a01a | 191 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.5, 1e30); // 0.85 ATTENTION |
2d109362 JB |
192 | varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0); |
193 | break; | |
79284309 | 194 | case kEvent: |
6720a01a | 195 | case kNoCut: |
2d109362 | 196 | case kFlow: |
79284309 | 197 | case kRec: |
6720a01a | 198 | case kStd: |
79284309 | 199 | case kTRD: |
200 | case kTPCTOFTRD: | |
201 | case kAvgPt: | |
ab5dc7f9 | 202 | case kNoPID: |
2d109362 | 203 | case kSysMCele: |
6720a01a | 204 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.85, 1e30); |
205 | varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.8, 0.8); | |
79284309 | 206 | case kLegEff: |
207 | varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0); | |
208 | trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any | |
209 | //if(hasMC) varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); | |
210 | //else | |
6720a01a | 211 | /// |
ab5dc7f9 | 212 | break; |
213 | case kTOF: | |
ab5dc7f9 | 214 | case kTPC: |
79284309 | 215 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.95, 1e30); //0.8 |
216 | varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); | |
217 | varRecCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70.0, 160.0); | |
218 | trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 7); // ITS-3 = 1+2+4 | |
ab5dc7f9 | 219 | break; |
2d109362 JB |
220 | ///////////////////////////////////////////////////////////////////////////////////////////// systematics |
221 | case kSysPt: | |
222 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 1.1, 20./*1e30*/); ///ATTENTION | |
6720a01a | 223 | varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.8, 0.8); |
2d109362 JB |
224 | varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0); |
225 | trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any | |
226 | break; | |
227 | case kSysEta: | |
6720a01a | 228 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.85, 20./*1e30*/); |
2d109362 JB |
229 | varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); ////ATTENTION |
230 | varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0); | |
231 | trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any | |
232 | break; | |
233 | case kSysEle: | |
234 | case kSysPro: | |
6720a01a | 235 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.85, 20./*1e30*/); |
236 | varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.8, 0.8); | |
2d109362 JB |
237 | varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0); |
238 | trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any | |
239 | break; | |
240 | case kSysSPD: | |
6720a01a | 241 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.85, 20./*1e30*/); |
242 | varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.8, 0.8); | |
2d109362 JB |
243 | varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0); |
244 | trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 1); // SPD any | |
245 | break; | |
246 | case kSysMC: | |
6720a01a | 247 | varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.85, 1e30); |
2d109362 JB |
248 | varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); ////ATTENTION |
249 | varRecCuts->AddCut(AliDielectronVarManager::kTPCclsSegments,7., 8.0); | |
250 | trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any | |
251 | break; | |
ab5dc7f9 | 252 | } |
79284309 | 253 | |
254 | // standrad reconstruction cuts | |
255 | varRecCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
256 | varRecCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
257 | varRecCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
258 | varRecCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0); | |
259 | // varRecCuts->AddCut(AliDielectronVarManager::kV0Index0, 0.0); | |
359a5e52 | 260 | if(cutDefinition!=kPIDqa) trkRecCuts->SetRequireITSRefit(kTRUE); |
79284309 | 261 | trkRecCuts->SetRequireTPCRefit(kTRUE); |
187de573 | 262 | |
8c06b662 | 263 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
79284309 | 264 | AliDielectronCutGroup *grpPIDCuts = new AliDielectronCutGroup("PID","PID",AliDielectronCutGroup::kCompAND); |
265 | AliDielectronVarCuts *pidSelCuts = new AliDielectronVarCuts("selPIDCuts","selPIDCuts"); | |
266 | pidSelCuts->AddCut(AliDielectronVarManager::kTRDpidQuality, 4.0, 6.0); | |
267 | pidSelCuts->AddCut(AliDielectronVarManager::kTRDchi2, 0.0, 2.0); | |
ab5dc7f9 | 268 | AliDielectronVarCuts *pidVarCuts = new AliDielectronVarCuts("varPIDCuts","varPIDCuts"); |
79284309 | 269 | AliDielectronVarCuts *pidMCCuts = new AliDielectronVarCuts("mcPIDCuts","mcPIDCuts"); |
ab5dc7f9 | 270 | AliDielectronPID *pidCuts = new AliDielectronPID("PIDCuts","PIDCuts"); |
79284309 | 271 | |
ab5dc7f9 | 272 | switch(cutDefinition) { |
2d109362 | 273 | case kPIDqa: |
79284309 | 274 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-10.,10.); |
6720a01a | 275 | pidCuts->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.95,1.,pidSelCuts, |
276 | kFALSE, AliDielectronPID::kIfAvailable); | |
79284309 | 277 | break; |
ab5dc7f9 | 278 | case kTOF: |
279 | pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE); | |
280 | pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE, | |
281 | AliDielectronPID::kIfAvailable); | |
282 | case kTPC: | |
283 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,4.); | |
284 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.0,0.,0.,kTRUE); | |
285 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE); | |
286 | break; | |
79284309 | 287 | case kTRD: |
288 | pidCuts->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.95,1.,pidSelCuts, | |
289 | kFALSE, AliDielectronPID::kIfAvailable); | |
290 | case kEvent: | |
6720a01a | 291 | case kNoCut: |
2d109362 | 292 | case kFlow: |
6720a01a | 293 | case kStd: |
79284309 | 294 | case kLegEff: |
295 | case kAvgPt: | |
ab5dc7f9 | 296 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5.,3.); |
297 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.9,3.0,-0.5,+0.5,kFALSE, | |
79284309 | 298 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); |
299 | // pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.65,3.0,-0.3,+0.3,kFALSE, | |
300 | // AliDielectronPID::kRequire,AliDielectronVarManager::kEta); | |
301 | // pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.4,3.0,-0.1,+0.1,kFALSE, | |
302 | // AliDielectronPID::kRequire,AliDielectronVarManager::kEta); | |
303 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,4.0,0.,0.,kTRUE); | |
304 | // tof heavy particle exclusion | |
305 | // pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.3, 0.7, kTRUE); | |
306 | //pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE, | |
307 | // AliDielectronPID::kIfAvailable); | |
308 | break; | |
309 | case kTPCTOFTRD: | |
310 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.3.,3.); | |
311 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.9,3.0,-0.5,+0.5,kFALSE, | |
312 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); | |
ab5dc7f9 | 313 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.65,3.0,-0.3,+0.3,kFALSE, |
79284309 | 314 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); |
ab5dc7f9 | 315 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.4,3.0,-0.1,+0.1,kFALSE, |
79284309 | 316 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); |
ab5dc7f9 | 317 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,4.0,0.,0.,kTRUE); |
79284309 | 318 | pidVarCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE); |
319 | pidCuts->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,3.,0.,0.,kFALSE, | |
320 | AliDielectronPID::kIfAvailable); | |
321 | pidCuts->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.95,1.,pidSelCuts, | |
322 | kFALSE, AliDielectronPID::kIfAvailable); | |
ab5dc7f9 | 323 | break; |
2d109362 JB |
324 | ///////////////////////////////////////////////////////////////////////////////////////////// systematics |
325 | case kSysPt: | |
326 | case kSysEta: | |
327 | case kSysSPD: | |
328 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5.,3.); | |
329 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.9,3.0,-0.5,+0.5,kFALSE, | |
330 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); | |
331 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,4.0,0.,0.,kTRUE); | |
332 | break; | |
333 | case kSysEle: | |
334 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,+0.7.,3.); | |
335 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,4.0,0.,0.,kTRUE); | |
336 | break; | |
337 | case kSysPro: | |
338 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5.,3.); | |
339 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.9,3.0,-0.5,+0.5,kFALSE, | |
340 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); | |
341 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE); | |
342 | break; | |
343 | case kSysMC: | |
344 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5.,3.); | |
345 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.9,3.0,-0.5,+0.5,kFALSE, | |
346 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); | |
347 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,3.5,0.,0.,kTRUE); | |
348 | break; | |
349 | case kSysMCele: | |
350 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5.,3.); | |
351 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.9,3.0,-0.5,+0.5,kFALSE, | |
352 | AliDielectronPID::kRequire,AliDielectronVarManager::kEta); | |
353 | pidCuts->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-100.,4.0,0.,0.,kTRUE); | |
354 | break; | |
8c06b662 | 355 | } |
187de573 | 356 | |
79284309 | 357 | // mc identification |
6720a01a | 358 | if(cutDefinition==kPIDqa && hasMC) { |
79284309 | 359 | pidMCCuts->SetCutType(AliDielectronVarCuts::kAny);//only apply any of the two cuts |
360 | pidMCCuts->AddCut(AliDielectronVarManager::kPdgCode,-11.5,-10.5 ); | |
361 | pidMCCuts->AddCut(AliDielectronVarManager::kPdgCode,10.5,11.5 ); | |
362 | } | |
363 | ||
359a5e52 JB |
364 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID POST CORRECTION vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
365 | // if(cutDefinition!=kEvent) SetEtaCorrection(pidCuts,hasMC); | |
366 | ||
79284309 | 367 | |
ab5dc7f9 | 368 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TENDER CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
8c06b662 | 369 | // exclude conversion electrons selected by the tender |
370 | AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv"); | |
371 | noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE); | |
ab5dc7f9 | 372 | |
373 | // activate the cut sets (order might be CPU timewise important) | |
79284309 | 374 | switch(cutDefinition) { |
375 | case kNoPID: | |
2d109362 | 376 | case kPIDqa: |
6720a01a | 377 | if(!isESD) die->GetTrackFilter().AddCuts(trkFilter); |
378 | die-> GetTrackFilter().AddCuts(varAccCuts); | |
2d109362 JB |
379 | grpRecCuts->AddCut(trkRecCuts); |
380 | grpRecCuts->AddCut(varRecCuts); | |
6720a01a | 381 | die-> GetTrackFilter().AddCuts(grpRecCuts); |
382 | if(hasMC) grpPIDCuts->AddCut(pidMCCuts); | |
383 | else grpPIDCuts->AddCut(pidCuts); | |
384 | die-> GetTrackFilter().AddCuts(grpPIDCuts); | |
2d109362 | 385 | break; |
79284309 | 386 | case kRec: |
387 | die->GetTrackFilter().AddCuts(varAccCuts); | |
388 | grpRecCuts->AddCut(trkRecCuts); | |
389 | grpRecCuts->AddCut(varRecCuts); | |
390 | die->GetTrackFilter().AddCuts(grpRecCuts); | |
391 | break; | |
392 | case kEvent: | |
6720a01a | 393 | case kNoCut: |
2d109362 | 394 | case kFlow: |
6720a01a | 395 | case kStd: |
79284309 | 396 | case kLegEff: |
397 | case kTRD: | |
398 | case kTPCTOFTRD: | |
399 | case kAvgPt: | |
400 | case kTOF: | |
401 | case kTPC: | |
2d109362 JB |
402 | case kSysPt: |
403 | case kSysEta: | |
404 | case kSysEle: | |
405 | case kSysPro: | |
406 | case kSysSPD: | |
407 | case kSysMC: | |
408 | case kSysMCele: | |
6720a01a | 409 | if(!isESD) die->GetTrackFilter().AddCuts(trkFilter); |
410 | die-> GetTrackFilter().AddCuts(varAccCuts); | |
79284309 | 411 | grpRecCuts->AddCut(trkRecCuts); |
412 | grpRecCuts->AddCut(varRecCuts); | |
6720a01a | 413 | die-> GetTrackFilter().AddCuts(grpRecCuts); |
79284309 | 414 | grpPIDCuts->AddCut(pidCuts); |
6720a01a | 415 | // grpPIDCuts->AddCut(pidVarCuts); |
416 | die-> GetTrackFilter().AddCuts(grpPIDCuts); | |
79284309 | 417 | //cuts->AddCut(noconv); |
6720a01a | 418 | // debug |
419 | trkFilter->Print(); | |
420 | varAccCuts->Print(); | |
421 | grpRecCuts->Print(); | |
422 | grpPIDCuts->Print(); | |
79284309 | 423 | } |
187de573 | 424 | |
8c06b662 | 425 | } |
426 | ||
2ed1b6ff | 427 | //______________________________________________________________________________________ |
428 | void SetupV0Cuts(AliDielectron *die, Int_t cutDefinition) | |
429 | { | |
430 | // | |
431 | // Setup the V0 cuts | |
432 | // | |
433 | ||
2d109362 JB |
434 | switch(cutDefinition) { |
435 | case kEvent: return; | |
6720a01a | 436 | case kNoCut: return; |
437 | // case kLegEff: return; | |
2d109362 JB |
438 | } |
439 | ||
440 | Bool_t bRej = kTRUE; | |
441 | Int_t defPID = 16; | |
442 | if(cutDefinition==kPIDqa) { | |
443 | bRej = kFALSE; | |
6720a01a | 444 | defPID = 13;//13 |
2d109362 | 445 | } |
2ed1b6ff | 446 | |
79284309 | 447 | AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("V0","V0"); |
2d109362 | 448 | gammaV0Cuts->SetV0finder(AliDielectronV0Cuts::kOnTheFly); |
f6a71c64 | 449 | gammaV0Cuts->SetPdgCodes(22,11,11); |
2d109362 JB |
450 | gammaV0Cuts->SetDefaultPID(defPID); |
451 | gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.05), 1.0, kFALSE); //0.02 -- 0.05 | |
f6a71c64 | 452 | gammaV0Cuts->AddCut(AliDielectronVarManager::kArmPt, 0.0, 0.05, kFALSE); |
2d109362 JB |
453 | gammaV0Cuts->AddCut(AliDielectronVarManager::kArmAlpha, -0.35, 0.35, kFALSE); |
454 | gammaV0Cuts->AddCut(AliDielectronVarManager::kM, 0.0, 0.1, kFALSE); //0.05 -- 0.1 | |
455 | gammaV0Cuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kFALSE); | |
456 | gammaV0Cuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kFALSE); | |
457 | gammaV0Cuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kFALSE); | |
458 | gammaV0Cuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.2, kFALSE); //0.05 -- 0.2 | |
359a5e52 JB |
459 | if(cutDefinition==kPIDqa && 0) { |
460 | gammaV0Cuts->AddCut(AliDielectronVarManager::kImpactParXY, 0.0, 1.0, kFALSE); | |
461 | gammaV0Cuts->AddCut(AliDielectronVarManager::kImpactParZ, 0.0, 1.0, kFALSE); | |
462 | } | |
2d109362 JB |
463 | // gammaV0Cuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kFALSE); |
464 | gammaV0Cuts->SetExcludeTracks(bRej); | |
2ed1b6ff | 465 | gammaV0Cuts->Print(); |
466 | ||
ab5dc7f9 | 467 | // const Double_t |cutAlphaG| < 0.35; && const Double_t cutQTG < 0.05; |
468 | // const Double_t |cutAlphaG2|[2] = {0.6, 0.8}; && const Double_t cutQTG2 < 0.04; | |
2ed1b6ff | 469 | |
79284309 | 470 | // if(cuts) |
471 | // ((AliDielectronCutGroup*)cuts)->AddCut(gammaV0Cuts); | |
472 | // else | |
473 | die->GetTrackFilter().AddCuts(gammaV0Cuts); | |
2ed1b6ff | 474 | } |
475 | ||
8c06b662 | 476 | //______________________________________________________________________________________ |
477 | void SetupPairCuts(AliDielectron *die, Int_t cutDefinition) | |
478 | { | |
479 | // | |
480 | // Setup the pair cuts | |
481 | // | |
79284309 | 482 | Bool_t hasMC=die->GetHasMC(); |
187de573 | 483 | |
79284309 | 484 | // rap and mass rejection |
2d109362 | 485 | Double_t gCut=0.05, yCut=0.9, eCut=0.01; |
8c06b662 | 486 | switch(cutDefinition) { |
6720a01a | 487 | case kNoCut: |
79284309 | 488 | case kEvent: yCut=0.0; break; |
2d109362 JB |
489 | case kPIDqa: return; |
490 | case kFlow: yCut=0.8; break; | |
79284309 | 491 | case kRec: yCut=0.9; break; |
492 | case kNoPID: return; | |
79284309 | 493 | case kTPC: yCut=0.9; break; |
494 | case kTOF: yCut=0.9; break; | |
495 | case kTRD: yCut=0.8; break; | |
6720a01a | 496 | case kStd: yCut=0.8; break; |
79284309 | 497 | case kLegEff: return; |
498 | case kTPCTOFTRD: yCut=0.8; break; | |
499 | case kAvgPt: yCut=0.8; break; | |
2d109362 JB |
500 | case kSysMC: yCut=0.9; break; |
501 | case kSysMCele: yCut=0.8; break; | |
502 | case kSysEta: yCut=0.9; break; | |
503 | case kSysPt: | |
504 | case kSysEle: | |
505 | case kSysPro: | |
506 | case kSysSPD: | |
507 | yCut=0.8; break; | |
79284309 | 508 | // default: gCut=0.05; // default |
8c06b662 | 509 | } |
187de573 | 510 | |
79284309 | 511 | // MC |
512 | //if(hasMC) yCut=0.9; | |
513 | ||
514 | // rapidity selection | |
515 | AliDielectronVarCuts *rapCut=new AliDielectronVarCuts(Form("|Y|<%.1f",yCut),Form("|Y|<%.1f",yCut)); | |
516 | rapCut->AddCut(AliDielectronVarManager::kY,-1.*yCut,yCut); | |
517 | die->GetPairFilter().AddCuts(rapCut); | |
518 | ||
519 | // gamma rejection | |
d28542ba | 520 | AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts"); |
d28542ba | 521 | gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut); |
522 | die->GetPairPreFilter().AddCuts(gammaCuts); | |
187de573 | 523 | |
2d109362 | 524 | // pair efficiency cut |
359a5e52 JB |
525 | // if(cutDefinition==kAvgPt && !hasMC) { |
526 | // AliDielectronVarCuts *effCut=new AliDielectronVarCuts(Form("(Axe)>%.2f",eCut),Form("(Axe)>%.2f",eCut)); | |
527 | // effCut->AddCut(AliDielectronVarManager::kPairEff,0.0,eCut,kTRUE); | |
528 | // die->GetPairFilter().AddCuts(effCut); | |
529 | // } | |
2d109362 JB |
530 | |
531 | // random signal rejection | |
532 | AliDielectronCutGroup *grpRNDMCuts = new AliDielectronCutGroup("RNDM","RNDM",AliDielectronCutGroup::kCompOR); | |
533 | AliDielectronVarCuts *exclCutCEN=new AliDielectronVarCuts("exclCEN","exclCEN"); | |
534 | exclCutCEN->SetCutType(AliDielectronVarCuts::kAll); // all criteria need to be fullfilled | |
535 | exclCutCEN->AddCut(AliDielectronVarManager::kRndmPair,0.0,1./40); | |
536 | exclCutCEN->AddCut(AliDielectronVarManager::kPdgCode,443); | |
537 | exclCutCEN->AddCut(AliDielectronVarManager::kCentrality,0.,10.); | |
538 | AliDielectronVarCuts *exclCutSEMI=new AliDielectronVarCuts("exclSEMI","exclSEMI"); | |
539 | exclCutSEMI->SetCutType(AliDielectronVarCuts::kAll); // all criteria need to be fullfilled | |
540 | exclCutSEMI->AddCut(AliDielectronVarManager::kRndmPair,0.0,1./20); | |
541 | exclCutSEMI->AddCut(AliDielectronVarManager::kPdgCode,443); | |
542 | exclCutSEMI->AddCut(AliDielectronVarManager::kCentrality,10.,90.); | |
543 | AliDielectronVarCuts *inclCut=new AliDielectronVarCuts("incl","incl"); | |
544 | inclCut->AddCut(AliDielectronVarManager::kPdgCode,443,443,kTRUE); | |
545 | grpRNDMCuts->AddCut(exclCutCEN); | |
546 | grpRNDMCuts->AddCut(exclCutSEMI); | |
547 | grpRNDMCuts->AddCut(inclCut); | |
6720a01a | 548 | if(hasMC && cutDefinition==kStd && 0) die->GetPairFilter().AddCuts(grpRNDMCuts); //ATTENTION |
2d109362 | 549 | |
8c06b662 | 550 | } |
551 | ||
2ed1b6ff | 552 | //______________________________________________________________________________________ |
553 | void ConfigBgrd(AliDielectron *die, Int_t cutDefinition) | |
554 | { | |
555 | // | |
556 | // Configurate the background estimators | |
557 | // | |
558 | ||
6720a01a | 559 | // default no processing of LS |
560 | // die->SetProcessLS(kFALSE); | |
561 | ||
562 | // skip config | |
79284309 | 563 | switch(cutDefinition) { |
564 | case kEvent: | |
6720a01a | 565 | case kNoCut: |
79284309 | 566 | case kNoPID: |
2d109362 | 567 | case kPIDqa: |
79284309 | 568 | case kRec: |
2d109362 | 569 | case kLegEff: |
79284309 | 570 | return; |
571 | } | |
572 | ||
6720a01a | 573 | Bool_t hasMC=die->GetHasMC(); |
574 | if(hasMC && cutDefinition!=kAvgPt) return; | |
575 | ||
2ed1b6ff | 576 | // add track rotations |
577 | AliDielectronTrackRotator *rot=new AliDielectronTrackRotator; | |
578 | rot->SetIterations(10); | |
579 | rot->SetConeAnglePhi(TMath::Pi()); | |
580 | rot->SetStartAnglePhi(TMath::Pi()); | |
581 | // die->SetTrackRotator(rot); | |
582 | ||
583 | // add mixed events | |
584 | AliDielectronMixingHandler *mix=new AliDielectronMixingHandler; | |
79284309 | 585 | switch(cutDefinition) { |
6720a01a | 586 | // case kStd: |
79284309 | 587 | // mix->AddVariable(AliDielectronVarManager::kZvPrim, 20, -10., 10.); |
588 | // mix->AddVariable(AliDielectronVarManager::kCentrality, 36, 0., 90.); | |
589 | // mix->AddVariable(AliDielectronVarManager::kv0ACrpH2, 10, 0., TMath::Pi()); | |
590 | // break; | |
591 | default: | |
592 | mix->AddVariable(AliDielectronVarManager::kZvPrim, "-10.,-5.,-4.,-3.,-2.,-1.,0.,1.,2.,3.,4.,5.,10."); | |
593 | mix->AddVariable(AliDielectronVarManager::kCentrality, 9, 0.,90.); | |
594 | mix->AddVariable(AliDielectronVarManager::kTPCrpH2, 10, TMath::Pi()/-2, TMath::Pi()/2); // max res: 10%->10bins // 8bins | |
595 | // mix->AddVariable(AliDielectronVarManager::kTPCmagH2, "0.,20.,50.,80.,110.,150.,500."); | |
596 | break; | |
597 | } | |
598 | mix->SetSkipFirstEvent(kTRUE); // needed for flow analysis | |
2ed1b6ff | 599 | mix->SetMixType(AliDielectronMixingHandler::kAll); |
600 | mix->SetDepth(150); | |
601 | die->SetMixingHandler(mix); | |
602 | ||
603 | } | |
604 | ||
605 | //______________________________________________________________________________________ | |
606 | void ConfigEvtPlane(AliDielectron *die, Int_t cutDefinition) | |
607 | { | |
608 | // | |
609 | // Configurate the TPC event plane | |
610 | // | |
611 | ||
79284309 | 612 | switch(cutDefinition) { |
2d109362 | 613 | // case kEvent: |
79284309 | 614 | case kNoPID: |
2d109362 JB |
615 | case kPIDqa: |
616 | // case kRec: // TOTHINK: might be needed when checking efficiencies versus dPhi | |
617 | case kLegEff: | |
79284309 | 618 | return; |
619 | } | |
620 | ||
6720a01a | 621 | Bool_t hasMC=die->GetHasMC(); |
622 | if(hasMC && cutDefinition!=kAvgPt) return; | |
623 | ||
ab5dc7f9 | 624 | // Double_t gGap; |
625 | // switch(cutDefinition) { | |
626 | // case kEtaGap01: gGap=0.1; break; | |
627 | // case kEtaGap02: gGap=0.2; break; | |
628 | // case kEtaGap03: gGap=0.3; break; | |
629 | // case kEtaGap04: gGap=0.4; break; | |
630 | // case kEtaGap05: gGap=0.5; break; | |
631 | // default: gGap=0.0; | |
632 | // } | |
633 | // eta gap in tpc event plane | |
634 | // AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap"); | |
635 | // etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE); | |
636 | // die->GetEventPlanePreFilter().AddCuts(etaGap); | |
2ed1b6ff | 637 | |
638 | AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI"); | |
639 | poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window | |
640 | die->GetEventPlanePOIPreFilter().AddCuts(poi); | |
641 | ||
ab5dc7f9 | 642 | // die->SetLikeSignSubEvents(); |
2ed1b6ff | 643 | die->SetPreFilterEventPlane(); |
644 | } | |
645 | ||
8c06b662 | 646 | //______________________________________________________________________________________ |
647 | void InitHistograms(AliDielectron *die, Int_t cutDefinition) | |
648 | { | |
649 | // | |
650 | // Initialise the histograms | |
651 | // | |
ab5dc7f9 | 652 | Bool_t hasMC=die->GetHasMC(); |
187de573 | 653 | |
ef0426e6 | 654 | // booleans for histo selection |
2d109362 | 655 | Bool_t bHistTrackQA=kFALSE, bHistEvts=kFALSE, bHistPair=kFALSE, bHistTrk=kFALSE, bHistPairME=kFALSE, bHistFlow=kFALSE, bHistFlowQA=kFALSE, bHistPID=kFALSE; |
ef0426e6 | 656 | switch (cutDefinition) { |
6720a01a | 657 | case kNoCut: |
79284309 | 658 | case kEvent: bHistEvts=kTRUE; break; |
2d109362 JB |
659 | case kPIDqa: bHistTrk=kTRUE; break; |
660 | case kNoPID: bHistTrk=kTRUE; break; | |
661 | case kRec: /* */ break; | |
79284309 | 662 | case kTPC: |
663 | case kTOF: //bHistEvts=kTRUE; //bHistFlow=kTRUE; | |
664 | case kTRD: ///bHistEvts=kTRUE; //bHistFlow=kTRUE; | |
2d109362 | 665 | case kAvgPt: |
6720a01a | 666 | case kSysMC: |
667 | case kStd: ///*bHistEvts=kTRUE;*/ bHistPair=kTRUE; break; //bHistPairME=kTRUE; | |
2d109362 JB |
668 | case kTPCTOFTRD: bHistPair=kTRUE; bHistTrk=kTRUE; bHistPID=kTRUE; break; //bHistPairME=kTRUE; |
669 | case kSysMCele: bHistPair=kTRUE; bHistPID=kFALSE; break; //bHistPairME=kTRUE; | |
6720a01a | 670 | case kLegEff: bHistTrk=kTRUE; break; |
79284309 | 671 | } |
672 | if(hasMC) { | |
673 | bHistPID=kFALSE; | |
ef0426e6 | 674 | } |
ef0426e6 | 675 | |
8c06b662 | 676 | //Setup histogram Manager |
677 | AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle()); | |
2d109362 JB |
678 | die->SetHistogramManager(histos); |
679 | ||
680 | //Initialise histogram classes | |
681 | histos->SetReservedWords("Track;Pair"); | |
187de573 | 682 | |
8c06b662 | 683 | //add histograms to event class |
684 | histos->AddClass("Event"); | |
79284309 | 685 | Int_t maxMixBins = (die->GetMixingHandler() ? die->GetMixingHandler()->GetNumberOfBins() : 0); |
2ed1b6ff | 686 | histos->UserHistogram("Event","","", 100, 0.0, 100.0, AliDielectronVarManager::kCentrality); |
6720a01a | 687 | if(die->GetMixingHandler() && maxMixBins) |
79284309 | 688 | histos->UserHistogram("Event","","", maxMixBins, 0, maxMixBins, AliDielectronVarManager::kMixingBin); |
2d109362 JB |
689 | // candidates monitoring |
690 | histos->UserProfile("Event","","", AliDielectronVarManager::kTracks, GetRunNumbers2011(), AliDielectronVarManager::kRunNumber); | |
691 | histos->UserProfile("Event","","", AliDielectronVarManager::kPairs, GetRunNumbers2011(), AliDielectronVarManager::kRunNumber); | |
692 | ||
693 | ||
694 | //event plane histograms | |
695 | if(cutDefinition==kFlow) { | |
696 | if(!hasMC) AddQAHistsEP(die); | |
697 | histos->UserHistogram("Pair","","", 100,-1*TMath::Pi(),+1*TMath::Pi(), AliDielectronVarManager::kDeltaPhiv0ArpH2); | |
698 | histos->UserHistogram("Pair","","", 100,-1*TMath::Pi(),+1*TMath::Pi(), AliDielectronVarManager::kDeltaPhiv0CrpH2); | |
699 | histos->UserHistogram("Pair","","", 100,-1*TMath::Pi(),+1*TMath::Pi(), AliDielectronVarManager::kDeltaPhiTPCrpH2); | |
700 | } | |
ef0426e6 | 701 | |
702 | ////// EVENT HISTOS ///// | |
703 | if(bHistEvts) { | |
79284309 | 704 | histos->UserHistogram("Event","","", GetRunNumbers2011(), AliDielectronVarManager::kRunNumber); |
2ed1b6ff | 705 | histos->UserHistogram("Event","","", 300,-15.,15., AliDielectronVarManager::kZvPrim); |
2d109362 JB |
706 | // histos->UserHistogram("Event","","", 300,0.,15000., AliDielectronVarManager::kRefMult); |
707 | histos->UserHistogram("Event","","", 300,0.,3000., AliDielectronVarManager::kRefMultTPConly); | |
708 | ||
709 | // histos->UserHistogram("Event","","", 100,0.,100., AliDielectronVarManager::kRefMultTPConly); | |
79284309 | 710 | histos->UserHistogram("Event","","", GetRunNumbers2011(), AliDielectronHelper::MakeLinBinning(3000, 0., 3000.), |
2d109362 | 711 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kRefMultTPConly); |
79284309 | 712 | histos->UserHistogram("Event","","", AliDielectronHelper::MakeLinBinning(90, 0., 90.), AliDielectronHelper::MakeLinBinning(3000, 0., 3000.), |
2d109362 JB |
713 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRefMultTPConly); |
714 | histos->UserProfile( "Event","","", AliDielectronVarManager::kRefMultTPConly, 90, 0., 90., AliDielectronVarManager::kCentrality); | |
359a5e52 JB |
715 | histos->UserProfile( "Event","","", AliDielectronVarManager::kMultV0A, 90, 0., 90., AliDielectronVarManager::kCentrality); |
716 | histos->UserProfile( "Event","","", AliDielectronVarManager::kMultV0C, 90, 0., 90., AliDielectronVarManager::kCentrality); | |
717 | // histos->UserProfile( "Event","","", AliDielectronVarManager::kEqMultV0A, 90, 0., 90., AliDielectronVarManager::kCentrality); | |
718 | // histos->UserProfile( "Event","","", AliDielectronVarManager::kEqMultV0C, 90, 0., 90., AliDielectronVarManager::kCentrality); | |
79284309 | 719 | histos->UserProfile( "Event","","", AliDielectronVarManager::kNVtxContrib, 90, 0., 90., AliDielectronVarManager::kCentrality); |
359a5e52 | 720 | histos->UserHistogram("Event","","", 100, 0., 4000., AliDielectronVarManager::kNVtxContribTPC); |
79284309 | 721 | |
2d109362 JB |
722 | // event plane histograms |
723 | if(!hasMC) AddQAHistsEP(die); | |
724 | // trigger histograms | |
79284309 | 725 | if(!hasMC) { |
2d109362 JB |
726 | histos->UserHistogram("Event","","", 29,0.,29., AliDielectronVarManager::kTriggerInclONL); |
727 | histos->UserHistogram("Event","","", 29,0.,29., AliDielectronVarManager::kTriggerInclOFF); | |
728 | histos->UserHistogram("Event","","", 29,0.,29., AliDielectronVarManager::kTriggerExclOFF); | |
729 | histos->UserHistogram("Event","","", 100,0.,100.,29,0.,29., | |
730 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTriggerInclONL); | |
731 | histos->UserHistogram("Event","","", 100,0.,100.,29,0.,29., | |
732 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTriggerExclOFF); | |
733 | histos->UserHistogram("Event","","", 300,0.,3000.,29,0.,29., | |
734 | AliDielectronVarManager::kRefMultTPConly,AliDielectronVarManager::kTriggerExclOFF); | |
735 | histos->UserHistogram("Event","","", 300,0.,3000.,29,0.,29., | |
736 | AliDielectronVarManager::kRefMultTPConly,AliDielectronVarManager::kTriggerInclOFF); | |
737 | } | |
ef0426e6 | 738 | |
79284309 | 739 | } //hist: event |
187de573 | 740 | |
79284309 | 741 | ///// PAIR HISTOS ///// |
ef0426e6 | 742 | if(bHistPair) { |
187de573 | 743 | |
ef0426e6 | 744 | //Pair classes |
745 | // to fill also mixed event histograms loop until 7 or 10 | |
6720a01a | 746 | for (Int_t i=1; i<(bHistPairME ? 8 : 2); ++i){ |
ef0426e6 | 747 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i))); |
187de573 | 748 | } |
6720a01a | 749 | |
79284309 | 750 | //add MC signal histograms to pair class |
ab5dc7f9 | 751 | if(die->GetMCSignals()) { |
2d109362 | 752 | for (Int_t i=0; i<die->GetMCSignals()->GetEntriesFast(); ++i) { |
ab5dc7f9 | 753 | histos->AddClass(Form("Pair_%s",die->GetMCSignals()->At(i)->GetName())); |
359a5e52 | 754 | histos->AddClass(Form("Pair_%s_MCtruth",die->GetMCSignals()->At(i)->GetName())); |
2d109362 | 755 | } |
ab5dc7f9 | 756 | } |
757 | ||
2d109362 | 758 | ///// Pair classes ///// |
6720a01a | 759 | histos->UserHistogram("Pair","","", 375,.0,375*0.04, AliDielectronVarManager::kM); // 40MeV bins, 12GeV/c2 |
2d109362 JB |
760 | histos->UserHistogram("Pair","","", 100,-1.,1., AliDielectronVarManager::kY); |
761 | histos->UserHistogram("Pair","","", 400,0,20., AliDielectronVarManager::kPt); | |
6720a01a | 762 | histos->UserHistogram("Pair","","", 125,.0,125*0.04, 400,0,20., AliDielectronVarManager::kM,AliDielectronVarManager::kPt); |
2d109362 JB |
763 | histos->UserHistogram("Pair","","", 100,0.,3.15, AliDielectronVarManager::kOpeningAngle); |
764 | histos->UserHistogram("Pair","","", 100,0.,20, AliDielectronVarManager::kChi2NDF); | |
765 | histos->UserHistogram("Pair","","", 100,0.,3.15, AliDielectronVarManager::kPsiPair); | |
766 | histos->UserHistogram("Pair","","", 200,0.,100., AliDielectronVarManager::kR); | |
767 | histos->UserHistogram("Pair","","", 50,0.,5., AliDielectronVarManager::kLegDist); | |
768 | histos->UserHistogram("Pair","","", 50,0.,5., AliDielectronVarManager::kLegDistXY); | |
359a5e52 JB |
769 | // histos->UserHistogram("Pair","","", 210,-1.05,1.05, 100,0.,2.5, |
770 | // AliDielectronVarManager::kArmAlpha,AliDielectronVarManager::kArmPt); | |
771 | histos->UserHistogram("Pair","","", 500,-2.5,2.5, AliDielectronVarManager::kImpactParXY); | |
772 | histos->UserHistogram("Pair","","", 600,-3.,3., AliDielectronVarManager::kImpactParZ); | |
773 | ||
6720a01a | 774 | if(!hasMC && die->GetMixingHandler() && maxMisBins) |
2d109362 JB |
775 | histos->UserHistogram("Pair","","", maxMixBins, 0, maxMixBins, AliDielectronVarManager::kMixingBin); |
776 | ||
777 | histos->UserHistogram("Pair","","", 100,.0,1., AliDielectronVarManager::kRndmPair); | |
778 | // histos->UserHistogram("Pair","","", GetPDGcodes(), AliDielectronVarManager::kPdgCode); | |
779 | // histos->UserHistogram("Pair","","", GetPDGcodes(), AliDielectronVarManager::kPdgCodeMother); | |
780 | // histos->UserHistogram("Pair","","", GetPDGcodes(), AliDielectronVarManager::kPdgCodeGrandMother); | |
781 | ||
782 | } //hist: pairs | |
783 | ||
784 | ||
785 | ///// TRACK HISTOS ///// | |
786 | if(bHistTrk) { | |
ab5dc7f9 | 787 | //Track classes |
ef0426e6 | 788 | //legs from pair (fill SE) |
79284309 | 789 | for (Int_t i=1; i<2; ++i){ |
2d109362 | 790 | if(bHistPair) histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i))); |
8c06b662 | 791 | } |
8c06b662 | 792 | //to fill also track info from 2nd event loop until 2 |
ab5dc7f9 | 793 | // for (Int_t i=0; i<2; ++i) histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); |
6720a01a | 794 | if(cutDefinition!=kLegEff) |
ab5dc7f9 | 795 | histos->AddClass(Form("Track_%s", AliDielectron::PairClassName(AliDielectron::kEv1PM))); |
187de573 | 796 | |
2d109362 JB |
797 | // PID post calibration |
798 | if(cutDefinition==kPIDqa) AddQAHistsPID(die); | |
79284309 | 799 | |
187de573 | 800 | // Vertex |
79284309 | 801 | // histos->UserHistogram("Track","","", 500,-1.,1., AliDielectronVarManager::kImpactParXY); |
802 | // histos->UserHistogram("Track","","", 600,-3.,3., AliDielectronVarManager::kImpactParZ); | |
187de573 | 803 | // Kinematics |
2ed1b6ff | 804 | histos->UserHistogram("Track","","", 400,0,20., AliDielectronVarManager::kPt); |
805 | histos->UserHistogram("Track","","", 200,-1,1, 200,0,6.285, AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi); | |
187de573 | 806 | // TPC |
79284309 | 807 | // histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kNclsTPC); |
808 | // histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kTPCsignalN); | |
809 | // histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kNFclsTPCr); | |
810 | // histos->UserHistogram("Track","","", 160,-0.5,159.5, 160,-0.5,159.5, AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr); | |
187de573 | 811 | // TRD |
2ed1b6ff | 812 | histos->UserHistogram("Track","","", 8,-0.5, 7.5, AliDielectronVarManager::kTRDpidQuality); |
359a5e52 JB |
813 | histos->UserHistogram("Track","","", 101,-0.5, 100.5, AliDielectronVarManager::kTRDsignal); |
814 | histos->UserHistogram("Track","","", 101,-0.5, 100.5, AliDielectronVarManager::kTRDchi2); | |
187de573 | 815 | // PID |
2d109362 JB |
816 | histos->UserHistogram("Track","","", 400,0.2,20.,200,0.,200., AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); |
817 | histos->UserHistogram("Track","","", 400,0.2,20.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
6720a01a | 818 | histos->UserHistogram("Track","","", 250,0.2,5.0,300,0.,1.2, AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,kTRUE); |
359a5e52 | 819 | // histos->UserHistogram("Track","","", 100,-1.,+1.,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle); |
79284309 | 820 | |
359a5e52 JB |
821 | // histos->UserHistogram("Track","","", 100,0.2,10.,100,0.,200., |
822 | // AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE); | |
823 | // histos->UserHistogram("Track","","", 100,0.2,10.,100,-5.,+5., | |
824 | // AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
79284309 | 825 | histos->UserHistogram("Track","","", 100,0.,4000.,100,0.,200., |
826 | AliDielectronVarManager::kRefMultTPConly,AliDielectronVarManager::kTPCsignal); | |
827 | histos->UserHistogram("Track","","", 100,0.,4000.,100,-5.,+5., | |
828 | AliDielectronVarManager::kRefMultTPConly,AliDielectronVarManager::kTPCnSigmaEle); | |
829 | histos->UserHistogram("Track","","", 100,0.,100.,100,0.,200., | |
830 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCsignal); | |
831 | histos->UserHistogram("Track","","", 100,0.,100.,100,-5.,+5., | |
832 | AliDielectronVarManager::kCentrality,AliDielectronVarManager::kTPCnSigmaEle); | |
833 | histos->UserHistogram("Track","","", 100,-1.,+1.,100,0.,200., | |
834 | AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal); | |
835 | histos->UserHistogram("Track","","", 100,-1.,+1.,100,-5.,+5., | |
836 | AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle); | |
837 | histos->UserHistogram("Track","","", 100,-1.,+1.,100,-5.,+5., | |
838 | AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEleRaw); | |
6720a01a | 839 | histos->UserHistogram("Track","","", 100,-1.,+1.,100,-5.,+5., |
840 | AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaPio); | |
2d109362 | 841 | } //hist: tracks |
187de573 | 842 | |
187de573 | 843 | |
359a5e52 | 844 | if(cutDefinition==kAvgPt) { |
2d109362 | 845 | // add single electron efficiency histograms |
6720a01a | 846 | AddQAHistsEff(die); |
2d109362 | 847 | } |
187de573 | 848 | |
ef0426e6 | 849 | ////// MONTE CARLO ////// |
2d109362 | 850 | if(cutDefinition==kLegEff) { |
79284309 | 851 | |
852 | //add MC signal histograms to track class | |
853 | if(die->GetMCSignals()) { | |
79284309 | 854 | |
2d109362 JB |
855 | TString className=""; |
856 | for (Int_t i=0; i<die->GetMCSignals()->GetEntriesFast(); ++i) { | |
857 | TString sigMCname = die->GetMCSignals()->At(i)->GetName(); | |
858 | ||
859 | // mc truth | |
860 | // histos->AddClass(Form("Pair_%s_MCtruth", sigMCname.Data())); | |
861 | // histos->AddClass(Form("Track_Legs_%s_MCtruth",sigMCname.Data())); | |
862 | // mc reconstructed | |
863 | // histos->AddClass(Form("Pair_%s", sigMCname.Data())); | |
864 | // histos->AddClass(Form("Track_Legs_%s", sigMCname.Data())); | |
865 | // tracks | |
866 | histos->AddClass(Form("Track_%s_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM),sigMCname.Data())); | |
867 | histos->AddClass(Form("Track_%s_%s_MCtruth",AliDielectron::PairClassName(AliDielectron::kEv1PM),sigMCname.Data())); | |
868 | } //end: loop signals | |
869 | } //end: has signals | |
870 | ||
871 | // add single electron histograms | |
872 | AddHistsEleEff(die); | |
873 | // pdg codes | |
874 | // histos->UserHistogram("Track","","", GetPDGcodes(), AliDielectronVarManager::kPdgCode); | |
875 | // histos->UserHistogram("Track","","", GetPDGcodes(), AliDielectronVarManager::kPdgCodeMother); | |
876 | // histos->UserHistogram("Track","","", GetPDGcodes(), AliDielectronVarManager::kPdgCodeGrandMother); | |
877 | // histos->UserHistogram("Track","","", GetPDGcodes(), GetPDGcodes(), | |
878 | // AliDielectronVarManager::kPdgCodeMother, AliDielectronVarManager::kPdgCodeGrandMother); | |
879 | } | |
79284309 | 880 | |
881 | ||
ef0426e6 | 882 | |
8c06b662 | 883 | die->SetHistogramManager(histos); |
79284309 | 884 | |
885 | ||
886 | ////// LOG ////// | |
887 | TIter nextClass(histos->GetHistogramList()); | |
888 | THashList *l=0; | |
889 | while ( (l=static_cast<THashList*>(nextClass())) ) { | |
890 | //printf(" [D] HistogramManger: Class %s: Histograms: %04d \n", l->GetName(), l->GetEntries()); | |
891 | } | |
892 | ||
2d109362 JB |
893 | } //end: init histograms |
894 | ||
895 | void AddQAHistsPID(AliDielectron *die) { | |
896 | // | |
897 | // add histograms for PID validation, comparison, post calibration aso. | |
898 | // | |
899 | ||
900 | Bool_t hasMC=die->GetHasMC(); | |
901 | AliDielectronHistos *histos = die->GetHistoManager(); | |
902 | ||
903 | // add MC signal tracks | |
904 | if(hasMC && die->GetMCSignals()) { | |
905 | TString sigMCname = die->GetMCSignals()->Last()->GetName(); | |
906 | histos->AddClass(Form("Track_%s_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM),sigMCname.Data())); | |
907 | } | |
908 | ||
909 | ||
910 | // for TPC post calibration | |
911 | ||
912 | // arbitrary binning for variables | |
913 | TVectorD *vcen = AliDielectronHelper::MakeLinBinning( 11, 0., 55.); | |
914 | (*vcen)[21] = 90.; | |
915 | ||
916 | // array of bin limits | |
917 | TObjArray *limits = new TObjArray(); | |
918 | limits->Add(AliDielectronHelper::MakeLinBinning( 75,-10., 5.)); | |
919 | limits->Add(AliDielectronHelper::MakeLinBinning( 75,-10., 5.)); | |
920 | // limits->Add(AliDielectronHelper::MakeLinBinning(100, 0., 200.)); | |
921 | // limits->Add(AliDielectronHelper::MakeLinBinning(60, 0., 1.2)); | |
922 | limits->Add(AliDielectronHelper::MakeLinBinning( 50, 0., 4000.)); | |
923 | limits->Add(AliDielectronHelper::MakeLinBinning( 50, 0., 10.)); | |
924 | // limits->Add(vcen); | |
925 | // limits->Add(AliDielectronHelper::MakeLinBinning( 36, 0., 90.)); | |
926 | limits->Add(AliDielectronHelper::MakeLinBinning( 20, -1., 1.)); | |
927 | limits->Add(GetRunNumbers2011()); | |
928 | UInt_t var[]={AliDielectronVarManager::kTPCnSigmaEleRaw, // NOTE: raw nsigma w/o corr | |
929 | AliDielectronVarManager::kTPCnSigmaEle, | |
930 | // AliDielectronVarManager::kTOFbeta, | |
931 | // AliDielectronVarManager::kTPCsignal, | |
932 | AliDielectronVarManager::kRefMultTPConly, | |
933 | AliDielectronVarManager::kPIn, | |
934 | // AliDielectronVarManager::kCentrality, | |
935 | AliDielectronVarManager::kEta, | |
936 | AliDielectronVarManager::kRunNumber | |
937 | }; | |
938 | // add merged track histogram | |
939 | histos->UserSparse("Track", limits->GetEntriesFast(), limits, var); | |
940 | ||
941 | // run dependence of nisgma electron | |
942 | histos->UserHistogram("Track","","", GetRunNumbers2011(),AliDielectronHelper::MakeLinBinning(100,-5.,+5.), | |
943 | AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kTPCnSigmaEleRaw); | |
944 | histos->UserHistogram("Track","","", GetRunNumbers2011(),AliDielectronHelper::MakeLinBinning(100,-5.,+5.), | |
945 | AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kTPCnSigmaEle); | |
946 | ||
947 | // post calibration check | |
948 | histos->UserHistogram("Track","","", 100,0.2,10.,100,-5.,+5., | |
949 | AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEleRaw,kTRUE); | |
950 | histos->UserHistogram("Track","","", 100,0.2,10.,100,-5.,+5., | |
951 | AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE); | |
952 | ||
953 | // TPC number of points used for nsigma calculation | |
954 | histos->UserHistogram("Track","","", 160,-0.5,159.5, AliDielectronVarManager::kTPCsignalN); | |
955 | } | |
956 | ||
957 | void AddQAHistsEP(AliDielectron *die) { | |
958 | // | |
959 | // add histograms for event plane flattening aso. | |
960 | // | |
961 | ||
962 | Bool_t hasMC=die->GetHasMC(); | |
963 | AliDielectronHistos *histos = die->GetHistoManager(); | |
964 | ||
6720a01a | 965 | histos->UserHistogram("Event","","", AliDielectronHelper::MakeLinBinning(100,-1.6,1.6), AliDielectronVarManager::kTPCrpH2); |
966 | histos->UserHistogram("Event","","", AliDielectronHelper::MakeLinBinning(100,-1.6,1.6), AliDielectronVarManager::kTPCrpH2uc); | |
967 | ||
2d109362 JB |
968 | // event plane resolutions |
969 | TObjArray *limits = new TObjArray(); | |
970 | limits->Add(AliDielectronHelper::MakeLinBinning( 18, 0., 90.)); | |
971 | // limits->Add(GetRunNumbers2011()); | |
972 | limits->Add(AliDielectronHelper::MakeLinBinning(100, -1., 1.)); | |
973 | limits->Add(AliDielectronHelper::MakeLinBinning(100, -1., 1.)); | |
974 | limits->Add(AliDielectronHelper::MakeLinBinning(100, -1., 1.)); | |
975 | ||
976 | UInt_t var[]={AliDielectronVarManager::kCentrality, | |
977 | // AliDielectronVarManager::kRunNumber, | |
978 | AliDielectronVarManager::kv0ATPCDiffH2, | |
979 | AliDielectronVarManager::kv0CTPCDiffH2, | |
980 | AliDielectronVarManager::kv0Av0CDiffH2 }; | |
981 | // histos->UserSparse("Event", 4, limits, var); | |
982 | ||
983 | // event plane angles | |
984 | TObjArray *limits2 = new TObjArray(); | |
985 | limits2->Add(AliDielectronHelper::MakeLinBinning( 18, 0., 90.)); | |
986 | // limits2->Add(GetRunNumbers2011()); | |
987 | limits2->Add(AliDielectronHelper::MakeLinBinning(100, -1.6, 1.6)); | |
988 | limits2->Add(AliDielectronHelper::MakeLinBinning(100, -1.6, 1.6)); | |
989 | limits2->Add(AliDielectronHelper::MakeLinBinning(100, -1.6., 1.6)); | |
990 | ||
991 | UInt_t var2[]={AliDielectronVarManager::kCentrality, | |
992 | // AliDielectronVarManager::kRunNumber, | |
993 | AliDielectronVarManager::kv0ArpH2, | |
994 | AliDielectronVarManager::kv0CrpH2, | |
995 | AliDielectronVarManager::kTPCrpH2 }; | |
996 | histos->UserSparse("Event", limits2->GetEntriesFast(), limits2, var2); | |
997 | ||
998 | // VZERO event plane angles (sub rings) | |
999 | histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0A0rpH2); | |
1000 | histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0C0rpH2); | |
1001 | histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0A3rpH2); | |
1002 | histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0C3rpH2); | |
1003 | histos->UserHistogram("Event","","", 100,-2.,2., AliDielectronVarManager::kv0ACrpH2); // combined A+C | |
1004 | ||
1005 | // run dependence of the angles | |
1006 | histos->UserHistogram("Event","","", GetRunNumbers2011(), AliDielectronHelper::MakeLinBinning(100,-1.6,1.6), | |
1007 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kv0ArpH2); | |
1008 | histos->UserHistogram("Event","","", GetRunNumbers2011(), AliDielectronHelper::MakeLinBinning(100,-1.6,1.6), | |
1009 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kv0CrpH2); | |
1010 | histos->UserHistogram("Event","","", GetRunNumbers2011(), AliDielectronHelper::MakeLinBinning(100,-1.6,1.6), | |
1011 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kTPCrpH2); | |
1012 | ||
1013 | ||
1014 | // TPC q vector components | |
1015 | histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCxH2); | |
1016 | histos->UserHistogram("Event","","", 100,-1500.,1500., AliDielectronVarManager::kTPCyH2); | |
1017 | // histos->UserHistogram("Event","","", 100, -2., 2., AliDielectronVarManager::kTPCsub1rpH2); | |
1018 | // histos->UserHistogram("Event","","", 100, -2., 2., AliDielectronVarManager::kTPCsub2rpH2); | |
1019 | // histos->UserHistogram("Event","","", 100, -1., 1., AliDielectronVarManager::kTPCsub12DiffH2); | |
1020 | ||
1021 | // further event plane resolutions (used in 3 sub event method) | |
1022 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0ATPCDiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1023 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0CTPCDiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1024 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0Av0CDiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1025 | histos->UserProfile("Event","","", AliDielectronVarManager::kTPCsub12DiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1026 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0Av0C0DiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1027 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0Av0C3DiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1028 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0Cv0A0DiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1029 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0Cv0A3DiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1030 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0A0v0A3DiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1031 | histos->UserProfile("Event","","", AliDielectronVarManager::kv0C0v0C3DiffH2, 18, 0.,90., AliDielectronVarManager::kCentrality); | |
1032 | ||
1033 | // EP angle correlation (range of phi angle) | |
1034 | // histos->UserHistogram("Event","","", 320,-3.2.,3.2, 320,-3.2.,3.2, | |
1035 | // AliDielectronVarManager::kTPCrpH2,AliDielectronVarManager::kv0ACrpH2); | |
1036 | ||
1037 | // EP Qvector magnitudes | |
1038 | histos->UserHistogram("Event","","", 200,0.,200., AliDielectronVarManager::kTPCmagH2); | |
1039 | histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0ACmagH2); | |
1040 | histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0AmagH2); | |
1041 | histos->UserHistogram("Event","","", 200,0.,800., AliDielectronVarManager::kv0CmagH2); | |
1042 | ||
1043 | // detector effects checks | |
1044 | histos->UserHistogram("Event","","", 10,0.,100., 300,-1.0,1.0, | |
1045 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCsub12DiffH2Sin); | |
1046 | ||
1047 | // TPC recentering | |
1048 | // histos->UserProfile("Event","","", AliDielectronVarManager::kTPCxH2, | |
1049 | // AliDielectronHelper::MakeLinBinning(9, 0.,90.), GetRunNumbers2011(), | |
1050 | // AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRunNumber); | |
1051 | // histos->UserProfile("Event","","", AliDielectronVarManager::kTPCyH2, | |
1052 | // AliDielectronHelper::MakeLinBinning(9, 0.,90.), GetRunNumbers2011(), | |
1053 | // AliDielectronVarManager::kCentrality, AliDielectronVarManager::kRunNumber); | |
1054 | ||
1055 | } | |
1056 | ||
1057 | void AddHistsEleEff(AliDielectron *die) { | |
1058 | // | |
1059 | // adding histograms for single electron efficiencies | |
1060 | // | |
1061 | ||
1062 | Bool_t hasMC=die->GetHasMC(); | |
1063 | AliDielectronHistos *histos = die->GetHistoManager(); | |
1064 | ||
2d109362 JB |
1065 | // single electron efficiecy |
1066 | ||
1067 | // arbitrary binning for variables | |
1068 | // TVectorD *vpt = AliDielectronHelper::MakeLinBinning( 41, 0.0, 10.25); | |
1069 | // (*vpt)[41] = 20.; | |
1070 | TVectorD *vpt1 = AliDielectronHelper::MakeLinBinning( (int)(( 3. - 0.)/0.10), 0., 3.); //steps of 100MeV | |
1071 | TVectorD *vpt2 = AliDielectronHelper::MakeLinBinning( (int)(( 10.- 3.25)/0.25), 3.25, 10.); //steps of 250MeV | |
1072 | TVectorD *vpt3 = AliDielectronHelper::MakeLinBinning( (int)((100.-20.)/10.0), 20., 100.); //steps of 10GeV | |
1073 | TVectorD *vpt = new TVectorD(vpt1->GetNrows()+vpt2->GetNrows()+vpt3->GetNrows()); | |
1074 | for(Int_t i=0; i<vpt1->GetNrows(); i++) (*vpt)[i] = (*vpt1)[i]; | |
1075 | for(Int_t i=0; i<vpt2->GetNrows(); i++) (*vpt)[vpt1->GetNrows()+i] = (*vpt2)[i]; | |
1076 | for(Int_t i=0; i<vpt3->GetNrows(); i++) (*vpt)[vpt1->GetNrows()+vpt2->GetNrows()+i] = (*vpt3)[i]; | |
6720a01a | 1077 | delete vpt1; delete vpt2; delete vpt3; //vpt->Print(); |
2d109362 JB |
1078 | |
1079 | // array of bin limits | |
1080 | TObjArray *limEpm = new TObjArray(); | |
1081 | // limEpm->Add(AliDielectronHelper::MakeLinBinning( 75,-10., 5.)); | |
1082 | limEpm->Add(AliDielectronHelper::MakeLinBinning( 18, 0., 90.)); | |
1083 | limEpm->Add(vpt); | |
6720a01a | 1084 | limEpm->Add(AliDielectronHelper::MakeLinBinning( 20, 0., TMath::TwoPi())); |
2d109362 | 1085 | limEpm->Add(AliDielectronHelper::MakeLinBinning( 20, -1., +1.)); |
6720a01a | 1086 | // limEpm->Add(AliDielectronHelper::MakeLinBinning( 1, -1., +1.)); |
1087 | // limEpm->Add(AliDielectronHelper::MakeLinBinning( 1, -1., +1.)); | |
2d109362 JB |
1088 | limEpm->Add(GetRunNumbers2011()); |
1089 | limEpm->Add(GetPDGcodes()); | |
6720a01a | 1090 | limEpm->Add(GetPDGcodes()); |
2d109362 JB |
1091 | UInt_t varEpm[]={//AliDielectronVarManager::kTPCnSigmaEle, |
1092 | AliDielectronVarManager::kCentrality | |
1093 | ,AliDielectronVarManager::kPt | |
6720a01a | 1094 | ,AliDielectronVarManager::kPhi |
2d109362 | 1095 | ,AliDielectronVarManager::kEta |
6720a01a | 1096 | // ,AliDielectronVarManager::kImpactParXY |
1097 | // ,AliDielectronVarManager::kImpactParZ | |
2d109362 JB |
1098 | ,AliDielectronVarManager::kRunNumber |
1099 | ,AliDielectronVarManager::kPdgCodeMother | |
6720a01a | 1100 | ,AliDielectronVarManager::kPdgCodeGrandMother |
2d109362 JB |
1101 | }; |
1102 | // adding histogram | |
6720a01a | 1103 | if(hasMC) histos->UserSparse("Track", limEpm->GetEntriesFast(), limEpm, varEpm); |
1104 | delete limEpm; | |
2d109362 JB |
1105 | |
1106 | histos->UserHistogram("Track","","", 500,-1.,1., AliDielectronVarManager::kImpactParXY); | |
1107 | histos->UserHistogram("Track","","", 600,-3.,3., AliDielectronVarManager::kImpactParZ); | |
1108 | ||
1109 | // polarisation // | |
1110 | // array of bin limits | |
1111 | TVectorD *vpt = AliDielectronHelper::MakeLinBinning( 21, 0.0, 10.5); | |
1112 | (*vpt)[21] = 100.; | |
1113 | TObjArray *limPair = new TObjArray(); | |
1114 | limPair->Add(AliDielectronHelper::MakeLinBinning( 18, 0., 90.)); | |
1115 | limPair->Add(AliDielectronHelper::MakeLinBinning( 20, -1., +1.)); | |
1116 | limPair->Add(vpt); | |
1117 | // limPair->Add(GetPDGcodes()); | |
1118 | UInt_t varPair[]={ | |
1119 | AliDielectronVarManager::kCentrality | |
1120 | ,AliDielectronVarManager::kThetaCS | |
1121 | ,AliDielectronVarManager::kPt | |
1122 | // ,AliDielectronVarManager::kPdgCodeMother | |
1123 | }; | |
1124 | // if(hasMC) histos->UserSparse("Pair", limPair->GetEntriesFast(), limPair, varPair); // TAKES 4ever | |
6720a01a | 1125 | delete limPair; |
79284309 | 1126 | |
8c06b662 | 1127 | } |
1128 | ||
6720a01a | 1129 | void AddQAHistsEff(AliDielectron *die) { |
1130 | // | |
1131 | // adding histograms for single electron efficiencies | |
1132 | // | |
1133 | ||
1134 | Bool_t hasMC=die->GetHasMC(); | |
1135 | AliDielectronHistos *histos = die->GetHistoManager(); | |
1136 | ||
1137 | // arbitrary binning for variables | |
1138 | TVectorD *vpt1 = AliDielectronHelper::MakeLinBinning( (int)(( 3. - 0.)/0.10), 0., 3.); | |
1139 | TVectorD *vpt2 = AliDielectronHelper::MakeLinBinning( (int)(( 10.- 3.25)/0.25), 3.25, 10.); | |
1140 | TVectorD *vpt3 = AliDielectronHelper::MakeLinBinning( (int)((100.-20.)/10.0), 20., 100.); | |
1141 | TVectorD *vpt = new TVectorD(vpt1->GetNrows()+vpt2->GetNrows()+vpt3->GetNrows()); | |
1142 | for(Int_t i=0; i<vpt1->GetNrows(); i++) (*vpt)[i] = (*vpt1)[i]; | |
1143 | for(Int_t i=0; i<vpt2->GetNrows(); i++) (*vpt)[vpt1->GetNrows()+i] = (*vpt2)[i]; | |
1144 | for(Int_t i=0; i<vpt3->GetNrows(); i++) (*vpt)[vpt1->GetNrows()+vpt2->GetNrows()+i] = (*vpt3)[i]; | |
1145 | delete vpt1; delete vpt2; delete vpt3; | |
1146 | ||
1147 | // single electron efficiecy | |
1148 | // applied efficiencies in collision data | |
1149 | histos->UserHistogram("Track","","", 101,-0.01,1.0, AliDielectronVarManager::kLegEff); | |
1150 | histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, GetRunNumbers2011(), AliDielectronVarManager::kRunNumber); | |
1151 | histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, 18,0.0,90.0, AliDielectronVarManager::kCentrality); | |
1152 | histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, vpt, AliDielectronVarManager::kPt); | |
1153 | histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, 20,0.0,TMath::TwoPi(), AliDielectronVarManager::kPhi); | |
1154 | histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, 20,-1.,+1., AliDielectronVarManager::kEta); | |
1155 | // histos->UserProfile("Track","","", AliDielectronVarManager::kLegEff, | |
1156 | // vpt, AliDielectronHelper::MakeLinBinning(20,0.0,TMath::TwoPi()), | |
1157 | // AliDielectronVarManager::kPt,AliDielectronVarManager::kPhi); | |
1158 | ||
1159 | histos->UserHistogram("Pair","","", 101,-0.01,1.0, AliDielectronVarManager::kPairEff); | |
1160 | histos->UserProfile("Pair","","", AliDielectronVarManager::kPairEff, 125,.0,125*0.04, AliDielectronVarManager::kM); | |
1161 | histos->UserProfile("Pair","","", AliDielectronVarManager::kPairEff, 100,.0,10.0, AliDielectronVarManager::kPt); | |
1162 | histos->UserProfile("Pair","","", AliDielectronVarManager::kPairEff, 18,0.0,90.0, AliDielectronVarManager::kCentrality); | |
1163 | ||
1164 | histos->UserHistogram("Pair","","", 125,.0,125*0.04, 101,-0.01,1.0, | |
1165 | AliDielectronVarManager::kM, AliDielectronVarManager::kPairEff); | |
1166 | histos->UserHistogram("Pair","","", 200,0,10., 101,-0.01,1.0, | |
1167 | AliDielectronVarManager::kPt, AliDielectronVarManager::kPairEff); | |
1168 | ||
1169 | // array of bin limits | |
1170 | TObjArray *limEpm = new TObjArray(); | |
1171 | limEpm->Add(AliDielectronHelper::MakeLinBinning( 125, 0., 125*0.04)); | |
1172 | limEpm->Add(AliDielectronHelper::MakeLinBinning( 40, 0., 10.)); | |
1173 | limEpm->Add(AliDielectronHelper::MakeLinBinning( 101, -0.01, +1.0)); | |
1174 | UInt_t varEpm[]={ | |
1175 | AliDielectronVarManager::kM | |
1176 | ,AliDielectronVarManager::kPt | |
1177 | ,AliDielectronVarManager::kPairEff | |
1178 | }; | |
1179 | // histos->UserSparse("Pair", limEpm->GetEntriesFast(), limEpm, varEpm); | |
1180 | delete limEpm; | |
1181 | ||
1182 | histos->UserProfile("Pair","","", AliDielectronVarManager::kPt,125,.0,125*0.04, AliDielectronVarManager::kM); | |
1183 | //weighted | |
1184 | histos->UserHistogram("Pair","","", AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), | |
1185 | AliDielectronVarManager::kM, AliDielectronVarManager::kOneOverPairEff); | |
1186 | histos->UserProfile("Pair", "","", AliDielectronVarManager::kPt,AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), | |
1187 | AliDielectronVarManager::kM, "", AliDielectronVarManager::kOneOverPairEff); | |
1188 | } | |
1189 | ||
1190 | ||
443a091c | 1191 | void InitHF(AliDielectron* die, Int_t cutDefinition) |
1192 | { | |
1193 | // | |
4d7704c5 | 1194 | // Setup the HF arrays |
443a091c | 1195 | // |
2d109362 JB |
1196 | // do not fill |
1197 | switch(cutDefinition) { | |
6720a01a | 1198 | case kNoCut: |
2d109362 JB |
1199 | case kEvent: |
1200 | case kPIDqa: | |
1201 | case kLegEff: | |
1202 | case kNoPID: | |
1203 | case kRec: | |
6720a01a | 1204 | case kSysMC: |
2d109362 JB |
1205 | return; |
1206 | } | |
443a091c | 1207 | |
2d109362 JB |
1208 | // has mc |
1209 | Bool_t hasMC=die->GetHasMC(); | |
79284309 | 1210 | // booleans for histo selection |
2d109362 JB |
1211 | Bool_t bHistEff = kFALSE; //ATTENTION |
1212 | // mixing | |
1213 | AliDielectronMixingHandler *mixH=die->GetMixingHandler(); | |
1214 | Int_t maxMixBins = (mixH ? mixH->GetNumberOfBins() : 0); | |
2ed1b6ff | 1215 | |
2d109362 | 1216 | // container |
443a091c | 1217 | AliDielectronHF *hf=new AliDielectronHF(die->GetName(),die->GetTitle()); |
79284309 | 1218 | // define pair types and sources |
1219 | if(hasMC) hf->SetStepForMCGenerated(); | |
2d109362 | 1220 | hf->SetPairTypes(AliDielectronHF::kOSandMIX); |
6720a01a | 1221 | if(hasMC && cutDefinition!=kAvgPt) hf->SetPairTypes(AliDielectronHF::kMConly); // only mc truth |
2d109362 | 1222 | // hf->SetPairTypes(AliDielectronHF::kAll); // all pair types |
79284309 | 1223 | |
2d109362 | 1224 | //// define the grid size and granularity ///// |
6720a01a | 1225 | hf->AddCutVariable(AliDielectronVarManager::kCentrality, AliDielectronHelper::MakeArbitraryBinning("0.,10.,40.,50.,90.")); |
1226 | hf->AddCutVariable(AliDielectronVarManager::kPt, AliDielectronHelper::MakeArbitraryBinning("0.,1.5,2.,2.5,3.,5.,6.,7.,8.,10.,100.")); | |
1227 | hf->AddCutVariable(AliDielectronVarManager::kY, AliDielectronHelper::MakeArbitraryBinning("-0.9,-0.8,0.8,0.9")); | |
1228 | ||
1229 | // hf->AddCutVariable(AliDielectronVarManager::kCentrality, 9, 0., 90.); | |
1230 | // TVectorD *vpt = AliDielectronHelper::MakeLinBinning( 21, 0.0, 10.5); | |
1231 | // (*vpt)[21] = 100.; | |
1232 | // hf->AddCutVariable(AliDielectronVarManager::kPt, vpt); | |
1233 | // hf->AddCutVariable(AliDielectronVarManager::kY, 1, -0.8, 0.8); | |
1234 | if(cutDefinition==kAvgPt ) //NEW | |
1235 | hf->AddCutVariable(AliDielectronVarManager::kPairEff, AliDielectronHelper::MakeArbitraryBinning(".0,.01,.02,.03,.04,.05,.1,1.")); | |
79284309 | 1236 | |
1237 | // defaults | |
1238 | hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); | |
1239 | // for mixed event weighting | |
2d109362 | 1240 | // if(mixH) hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(maxMixBins,0,maxMixBins), AliDielectronVarManager::kMixingBin); |
79284309 | 1241 | |
1242 | // mean pt analysis | |
2d109362 | 1243 | if(cutDefinition==kAvgPt) { |
79284309 | 1244 | hf->UserProfile("Pair", AliDielectronVarManager::kPt, |
6720a01a | 1245 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); |
1246 | // hf->UserProfile("Pair", AliDielectronVarManager::kPtSq, | |
1247 | // AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); | |
1248 | // ME binning | |
1249 | // hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), | |
1250 | // AliDielectronHelper::MakeLinBinning(maxMixBins,0,maxMixBins), | |
1251 | // AliDielectronVarManager::kM, AliDielectronVarManager::kMixingBin); | |
1252 | // hf->UserProfile("Pair", AliDielectronVarManager::kPt, | |
1253 | // AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), | |
1254 | // AliDielectronHelper::MakeLinBinning(maxMixBins,0,maxMixBins), | |
1255 | // AliDielectronVarManager::kM, AliDielectronVarManager::kMixingBin); | |
79284309 | 1256 | } |
1257 | ||
1258 | // flow analysis | |
2d109362 | 1259 | if(cutDefinition==kFlow && !hasMC) { |
79284309 | 1260 | // flow versus minv |
1261 | hf->UserProfile("Pair", AliDielectronVarManager::kv0ArpH2FlowV2, | |
1262 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); | |
1263 | hf->UserProfile("Pair", AliDielectronVarManager::kv0CrpH2FlowV2, | |
1264 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); | |
1265 | hf->UserProfile("Pair", AliDielectronVarManager::kTPCrpH2FlowV2, | |
1266 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); | |
1267 | // detector effects | |
1268 | hf->UserProfile("Pair", AliDielectronVarManager::kCosTPCrpH2, | |
1269 | AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM); | |
1270 | hf->UserProfile("Pair", AliDielectronVarManager::kSinTPCrpH2, | |
1271 | AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM); | |
1272 | hf->UserProfile("Pair", AliDielectronVarManager::kCosPhiH2, | |
1273 | AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM); | |
1274 | hf->UserProfile("Pair", AliDielectronVarManager::kSinPhiH2, | |
1275 | AliDielectronHelper::MakeLinBinning(1,.0,125*0.04), AliDielectronVarManager::kM); | |
1276 | hf->UserProfile("Pair", AliDielectronVarManager::kTPCrpH2FlowV2Sin, | |
1277 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); | |
2d109362 JB |
1278 | |
1279 | // variables | |
1280 | hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins()); | |
1281 | hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins()); | |
1282 | hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiTPCrpH2, GetDeltaPhiBins()); | |
1283 | } | |
1284 | ||
1285 | // on the fly efficienies | |
359a5e52 | 1286 | if(cutDefinition==kAvgPt/* && (!hasMC || 0)*/) { |
2d109362 | 1287 | hf->UserProfile("Pair", AliDielectronVarManager::kPairEff, |
6720a01a | 1288 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM); |
2d109362 | 1289 | hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM, |
6720a01a | 1290 | AliDielectronVarManager::kOneOverPairEff); |
2d109362 | 1291 | hf->UserProfile("Pair", AliDielectronVarManager::kPt, |
6720a01a | 1292 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM, |
2d109362 | 1293 | "", AliDielectronVarManager::kOneOverPairEff); |
6720a01a | 1294 | // hf->UserProfile("Pair", AliDielectronVarManager::kPtSq, |
1295 | // AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), AliDielectronVarManager::kM, | |
1296 | // "", AliDielectronVarManager::kOneOverPairEff); | |
1297 | ||
1298 | // ME binning | |
1299 | if(maxMixBins) { | |
1300 | hf->UserHistogram("Pair", AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), | |
1301 | AliDielectronHelper::MakeLinBinning(maxMixBins,0,maxMixBins), | |
1302 | AliDielectronVarManager::kM, AliDielectronVarManager::kMixingBin, | |
1303 | AliDielectronVarManager::kOneOverPairEff); | |
1304 | hf->UserProfile("Pair", AliDielectronVarManager::kPt, | |
1305 | AliDielectronHelper::MakeLinBinning(125,.0,125*0.04), | |
1306 | AliDielectronHelper::MakeLinBinning(maxMixBins,0,maxMixBins), | |
1307 | AliDielectronVarManager::kM, AliDielectronVarManager::kMixingBin,"", | |
1308 | AliDielectronVarManager::kOneOverPairEff); | |
1309 | } | |
79284309 | 1310 | } |
1311 | ||
2d109362 JB |
1312 | |
1313 | /* | |
1314 | //// define the grid size and granularity ///// | |
1315 | // event variables // | |
1316 | // hf->AddCutVariable(AliDielectronVarManager::kCentrality, AliDielectronHelper::MakeArbitraryBinning("0,10,50,90")); // flow only | |
1317 | if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kCentrality, 18, 0., 90.); | |
1318 | else hf->AddCutVariable(AliDielectronVarManager::kCentrality, 9, 0., 90.); | |
1319 | // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011() ); | |
1320 | // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kNacc, 3000,0.,3000.); | |
1321 | // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kNVtxContrib, 20,0.,4000.); | |
79284309 | 1322 | |
1323 | // pair variables //ATTENTION | |
1324 | if(hasMC && 0) hf->AddCutVariable(AliDielectronVarManager::kY, 18, -0.9, 0.9); | |
1325 | // hf->AddCutVariable(AliDielectronVarManager::kPt, 10, 0.0, 10.0); | |
1326 | if(!hasMC) | |
1327 | hf->AddCutVariable(AliDielectronVarManager::kPt, AliDielectronHelper::MakeArbitraryBinning("0,1,2,3,4,5,6,7,8,9,10,100")); | |
1328 | // hf->AddCutVariable(AliDielectronVarManager::kPt, 20, 0.0, 10.0); | |
1329 | else | |
1330 | hf->AddCutVariable(AliDielectronVarManager::kPt, 50, 0.0, 10.0); | |
1331 | ||
1332 | // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01); | |
1333 | // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.); | |
1334 | ||
1335 | // flow variables // | |
1336 | // if(!hasMC) hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins()); | |
1337 | // if(!hasMC) hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins()); | |
1338 | if(!hasMC && bHistFlow) hf->AddCutVariable(AliDielectronVarManager::kDeltaPhiTPCrpH2, GetDeltaPhiBins()); | |
1339 | ||
1340 | // leg variables // NOTE: switched off in HF?? | |
1341 | // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kPt, "0.85, 0.95, 1.1, 100.0", kTRUE, AliDielectronHF::kBinToMax); | |
1342 | // if(hasMC) hf->AddCutVariable(AliDielectronVarManager::kEta,"-0.9,-0.8,0.8,0.9", kTRUE, AliDielectronHF::kSymBin); | |
779267ed | 1343 | // hf->AddCutVariable(AliDielectronVarManager::kY, 1, -0.9, 0.9 ); |
187de573 | 1344 | // hf->AddCutVariable(AliDielectronVarManager::kPt, "0.8, 1.0, 1.1, 1.2, 1.5, 100.0", kTRUE, AliDielectronHF::kBinToMax); |
79284309 | 1345 | // hf->AddCutVariable(AliDielectronVarManager::kNclsTPC, "70,90,100,120,160", kTRUE, AliDielectronHF::kBinToMax); |
779267ed | 1346 | // hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaEle,"-4,-3,-2.5,-2,2,2.5,3,4", kTRUE, AliDielectronHF::kSymBin); |
1347 | //hf->AddCutVariable(AliDielectronVarManager::kTPCnSigmaPio,"3.,3.5,4.,100.", kTRUE, AliDielectronHF::kBinToMax); | |
1348 | //hf->AddCutVariable(AliDielectronVarManager::kITSLayerFirstCls,4,0.,4., kFALSE, kTRUE, AliDielectronHF::kBinFromMin); | |
187de573 | 1349 | //hf->AddCutVariable(AliDielectronVarManager::kNclsITS, 5,2.,7., kFALSE, kTRUE, AliDielectronHF::kBinToMax); |
79284309 | 1350 | //hf->AddCutVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011()); |
359a5e52 | 1351 | */ |
443a091c | 1352 | die->SetHistogramArray(hf); |
1353 | } | |
8c06b662 | 1354 | |
1355 | void InitCF(AliDielectron* die, Int_t cutDefinition) | |
1356 | { | |
1357 | // | |
1358 | // Setup the CF Manager if needed | |
1359 | // | |
2d109362 JB |
1360 | // do not fill |
1361 | switch(cutDefinition) { | |
6720a01a | 1362 | case kNoCut: |
2d109362 JB |
1363 | case kEvent: |
1364 | case kPIDqa: | |
1365 | case kLegEff: | |
1366 | case kNoPID: | |
6720a01a | 1367 | case kAvgPt: //////////////////NEW |
2d109362 JB |
1368 | return; |
1369 | } | |
1370 | ||
1371 | // has mc | |
ab5dc7f9 | 1372 | Bool_t hasMC=die->GetHasMC(); |
2ed1b6ff | 1373 | |
2d109362 JB |
1374 | // mixing |
1375 | AliDielectronMixingHandler *mixH=die->GetMixingHandler(); | |
1376 | Int_t maxMixBins = (mixH ? mixH->GetNumberOfBins() : 0); | |
1377 | ||
1378 | // container | |
2ed1b6ff | 1379 | AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle()); |
3c59f53e | 1380 | |
79284309 | 1381 | //event variables |
2d109362 | 1382 | //cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.0,10.0,15.0,20.0,25.0,30.0,35.0,40.0,50.0"); |
79284309 | 1383 | cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.0,10.0,15.0,20.0,25.0,30.0,35.0,40.0,50.0,60.0,70.0,80.,90."); |
2d109362 | 1384 | // cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011() ); |
6720a01a | 1385 | if(mixH && maxMixBins) cf->AddVariable(AliDielectronVarManager::kMixingBin, AliDielectronHelper::MakeLinBinning(maxMixBins,0,maxMixBins)); |
79284309 | 1386 | |
1387 | //pair variables | |
2d109362 JB |
1388 | TVectorD *vpt = AliDielectronHelper::MakeLinBinning( 21, 0.0, 10.5); |
1389 | (*vpt)[21] = 100.; | |
1390 | cf->AddVariable(AliDielectronVarManager::kPt, vpt); | |
1391 | // TVectorD *vpt = AliDielectronHelper::MakeLinBinning( 41, 0.0, 10.25); | |
1392 | // (*vpt)[41] = 100.; | |
1393 | // cf->AddVariable(AliDielectronVarManager::kPt,vpt); | |
1394 | // cf->AddVariable(AliDielectronVarManager::kPt,80,0.0,100*0.25); | |
1395 | ||
79284309 | 1396 | // cf->AddVariable(AliDielectronVarManager::kY,"-5,-1,-0.9,-0.8,-0.5,0.5,0.8,0.9,1.0,5"); |
2d109362 JB |
1397 | cf->AddVariable(AliDielectronVarManager::kY,"-0.9,-0.8,-0.7,+0.7,+0.8,+0.9"); |
1398 | // cf->AddVariable(AliDielectronVarManager::kY,18,-0.9,+0.9); | |
79284309 | 1399 | cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps |
2d109362 JB |
1400 | // cf->AddVariable(AliDielectronVarManager::kPairType,1,1,1); |
1401 | cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11); | |
79284309 | 1402 | // cf->AddVariable(AliDielectronVarManager::kThetaCS,20,-1.,+1.); |
1403 | // cf->AddVariable(AliDielectronVarManager::kThetaHE,20,-1.,+1.); | |
1404 | // cf->AddVariable(AliDielectronVarManager::kPhiCS,20,-3.2,+3.2); | |
1405 | // cf->AddVariable(AliDielectronVarManager::kPhiHE,20,-3.2,+3.2); | |
359a5e52 JB |
1406 | /// cf->AddVariable(AliDielectronVarManager::kDeltaPhiTPCrpH2,GetDeltaPhiBins()); |
1407 | ||
1408 | if(cutDefinition==kAvgPt && 0) { //ATTENTION | |
1409 | cf->AddVariable(AliDielectronVarManager::kPairEff, AliDielectronHelper::MakeArbitraryBinning(".0,.01,.02,.03,.04,.05,.1,1.")); | |
1410 | } | |
1411 | ||
79284309 | 1412 | //leg variables |
6720a01a | 1413 | if(cutDefinition==kSysMC) { //ATTENTION |
1414 | // if(cutDefinition!=kSysMCele && 0) { //ATTENTION | |
2d109362 JB |
1415 | cf->AddVariable(AliDielectronVarManager::kPt,"0.85, 1.1, 100.0",kTRUE); |
1416 | // cf->AddVariable(AliDielectronVarManager::kNclsTPC,"0, 70, 80, 90, 100, 120, 160",kTRUE); | |
1417 | cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,-0.85,-0.8,-0.75,-0.70,0.70,0.75,0.8,0.85,0.9",kTRUE); | |
1418 | cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,3,-1.5,1.5,kTRUE); | |
1419 | cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,100",kTRUE); | |
1420 | cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-1.5,-1.0,-0.6,3.0",kTRUE); | |
1421 | } | |
1422 | else if(0){ | |
1423 | cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3.0,-1.5,-1.0,-0.6,3.0",kTRUE); | |
1424 | } | |
79284309 | 1425 | /* |
3c59f53e | 1426 | // event variables |
79284309 | 1427 | cf->AddVariable(AliDielectronVarManager::kCentrality, 18,0., 90.); |
1428 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kRunNumber, GetRunNumbers2011() ); | |
1429 | // if(hasMC) cf->AddVariable(AliDielectronVarManager::kNacc, 3000,0.,3000.); | |
1430 | // if(hasMC) cf->AddVariable(AliDielectronVarManager::kNVtxContrib, 20,0.,4000.); | |
3c59f53e | 1431 | |
8c06b662 | 1432 | // pair variables |
79284309 | 1433 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kPairType,1,1,1); |
1434 | else cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11); | |
ab5dc7f9 | 1435 | cf->AddVariable(AliDielectronVarManager::kM, 125, 0.0, 5.0); //40Mev Steps |
79284309 | 1436 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kY, 18, -0.9, 0.9); |
1437 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kPt, 100, 0.0, 20.0); | |
1438 | else cf->AddVariable(AliDielectronVarManager::kPt, AliDielectronHelper::MakeArbitraryBinning("0,1,2,3,4,5,6,7,8,9,10,20")); | |
ab5dc7f9 | 1439 | // if(hasMC) cf->AddVariable(AliDielectronVarManager::kTRDpidEffPair,101,0.0,1.01); |
3c59f53e | 1440 | // if(hasMC) cf->AddVariable(AliDielectronVarManager::kThetaCS,15,-1.,1.); |
1441 | ||
e0f6eeb2 | 1442 | // flow variables |
79284309 | 1443 | //if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0ArpH2, GetDeltaPhiBins()); |
1444 | //if(!hasMC) cf->AddVariable(AliDielectronVarManager::kDeltaPhiv0CrpH2, GetDeltaPhiBins()); | |
d28542ba | 1445 | |
3c59f53e | 1446 | // leg variables |
79284309 | 1447 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 0.85, 0.95, 1.0, 1.1, 100.0",kTRUE); |
1448 | if(hasMC) cf->AddVariable(AliDielectronVarManager::kEta,"-0.9,-0.8,-0.7, 0.7, 0.8, 0.9", kTRUE); | |
e0f6eeb2 | 1449 | // cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,7,-1.5,5.5,kTRUE); |
3c59f53e | 1450 | // cf->AddVariable(AliDielectronVarManager::kNclsITS,"1,2,3,4,5,6",kTRUE); |
ab5dc7f9 | 1451 | // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,"-3,-2.5,-2,2,2.5,3",kTRUE); |
1452 | // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,"2.5,3.0,3.5,4.0,4.5,100",kTRUE); | |
1453 | // cf->AddVariable(AliDielectronVarManager::kNclsTPC,"70, 90, 100, 120, 160",kTRUE); | |
3c59f53e | 1454 | // cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,"3.5,4.0,4.5,5.0,100",kTRUE); |
1455 | // cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,"-3,-2,2,3",kTRUE); break; | |
1456 | // cf->AddVariable(AliDielectronVarManager::kTRDpidQuality,"3.5, 4.5, 5.5, 6.5",kTRUE); | |
1457 | // if(!hasMC && isESD) cf->AddVariable(AliDielectronVarManager::kTRDchi2,"-1.,0.,2.,4.",kTRUE); | |
79284309 | 1458 | */ |
3c59f53e | 1459 | // mc steps |
8c06b662 | 1460 | if(hasMC) { |
79284309 | 1461 | cf->SetStepForMCtruth(); |
ab5dc7f9 | 1462 | // cf->SetStepForNoCutsMCmotherPid(); |
1463 | // cf->SetStepForAfterAllCuts(); | |
1464 | // cf->SetStepsForEachCut(); | |
1465 | // cf->SetStepsForSignal(); | |
2d109362 | 1466 | // cf->SetStepsForBackground(); |
6720a01a | 1467 | if(cutDefinition!=kAvgPt) cf->SetStepsForMCtruthOnly(); |
8c06b662 | 1468 | } |
2d109362 JB |
1469 | else |
1470 | cf->SetStepsForSignal(); | |
e0f6eeb2 | 1471 | |
8c06b662 | 1472 | die->SetCFManagerPair(cf); |
1473 | } | |
1474 | ||
79284309 | 1475 | void AddMCSignals(AliDielectron *die, Int_t cutDefinition){ |
8c06b662 | 1476 | //Do we have an MC handler? |
ab5dc7f9 | 1477 | if (!die->GetHasMC()) return; |
1478 | ||
1479 | AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive"); | |
8c06b662 | 1480 | inclusiveJpsi->SetLegPDGs(11,-11); |
1481 | inclusiveJpsi->SetMotherPDGs(443,443); | |
1482 | inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1483 | inclusiveJpsi->SetFillPureMCStep(kTRUE); | |
1484 | inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1485 | inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
ab5dc7f9 | 1486 | |
1487 | AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty"); | |
1488 | beautyJpsi->SetLegPDGs(11,-11); | |
1489 | beautyJpsi->SetMotherPDGs(443,443); | |
1490 | beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1491 | beautyJpsi->SetGrandMotherPDGs(500,500); | |
1492 | beautyJpsi->SetFillPureMCStep(kTRUE); | |
1493 | beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1494 | beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
1495 | beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
ab5dc7f9 | 1496 | |
1497 | AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt"); // prompt J/psi (not from beauty decays) | |
8c06b662 | 1498 | promptJpsi->SetLegPDGs(11,-11); |
1499 | promptJpsi->SetMotherPDGs(443,443); | |
1500 | promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
1501 | promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1502 | promptJpsi->SetFillPureMCStep(kTRUE); | |
1503 | promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
1504 | promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1505 | promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
1506 | promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
0c09cae4 | 1507 | |
1508 | // prompt J/psi radiative channel | |
ab5dc7f9 | 1509 | AliDielectronSignalMC* promptJpsiRad = new AliDielectronSignalMC("promptJpsiRad","PromptRadiative"); // prompt J/psi (not from beauty decays) |
0c09cae4 | 1510 | promptJpsiRad->SetLegPDGs(11,-11); |
1511 | promptJpsiRad->SetMotherPDGs(443,443); | |
1512 | promptJpsiRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
1513 | promptJpsiRad->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1514 | promptJpsiRad->SetFillPureMCStep(kTRUE); | |
1515 | promptJpsiRad->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
1516 | promptJpsiRad->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1517 | promptJpsiRad->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
1518 | promptJpsiRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
1519 | promptJpsiRad->SetJpsiRadiative(AliDielectronSignalMC::kIsRadiative); | |
0c09cae4 | 1520 | |
1521 | // prompt J/psi Non radiative channel | |
ab5dc7f9 | 1522 | AliDielectronSignalMC* promptJpsiNonRad = new AliDielectronSignalMC("promptJpsiNonRad","PromptNonRadiative"); // prompt J/psi (not from beauty decays) |
0c09cae4 | 1523 | promptJpsiNonRad->SetLegPDGs(11,-11); |
1524 | promptJpsiNonRad->SetMotherPDGs(443,443); | |
1525 | promptJpsiNonRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
1526 | promptJpsiNonRad->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1527 | promptJpsiNonRad->SetFillPureMCStep(kTRUE); | |
1528 | promptJpsiNonRad->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
1529 | promptJpsiNonRad->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1530 | promptJpsiNonRad->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
1531 | promptJpsiNonRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
1532 | promptJpsiNonRad->SetJpsiRadiative(AliDielectronSignalMC::kIsNotRadiative); | |
ab5dc7f9 | 1533 | |
1534 | AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct"); // embedded J/psi | |
1535 | directJpsi->SetLegPDGs(11,-11); | |
1536 | directJpsi->SetMotherPDGs(443,443); | |
1537 | directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1538 | directJpsi->SetFillPureMCStep(kTRUE); | |
1539 | directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
1540 | directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect); | |
1541 | directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1542 | directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
ab5dc7f9 | 1543 | |
1544 | AliDielectronSignalMC* gammaConversion = new AliDielectronSignalMC("gammaConversion","gamma conversions"); | |
1545 | gammaConversion->SetLegPDGs(11,-11); | |
1546 | gammaConversion->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1547 | gammaConversion->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary); | |
1548 | gammaConversion->SetMotherPDGs(22,22); | |
1549 | gammaConversion->SetMothersRelation(AliDielectronSignalMC::kSame); | |
ab5dc7f9 | 1550 | |
8c06b662 | 1551 | |
79284309 | 1552 | AliDielectronSignalMC* electrons = new AliDielectronSignalMC("electrons","electrons"); |
1553 | electrons->SetLegPDGs(11,1); //dummy second leg (never MCtrue) | |
1554 | electrons->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1555 | electrons->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
2d109362 | 1556 | // electrons->SetGrandMotherPDGs(500,500,kTRUE,kTRUE); // exclude non-prompt jpsi eletrons |
79284309 | 1557 | electrons->SetFillPureMCStep(kTRUE); |
1558 | // electrons->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1559 | ||
2d109362 | 1560 | AliDielectronSignalMC* directElec = new AliDielectronSignalMC("directElec","directElec"); |
6720a01a | 1561 | directElec->SetLegPDGs(11,1); //NEW |
1562 | // directElec->SetMothersRelation(AliDielectronSignalMC::kSame); | |
2d109362 JB |
1563 | // directElec->SetGrandMotherPDGs(-1103,-1103); |
1564 | directElec->SetFillPureMCStep(kTRUE); | |
6720a01a | 1565 | directElec->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); |
2d109362 | 1566 | directElec->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect); |
6720a01a | 1567 | directElec->SetCheckBothChargesLegs(kTRUE,kTRUE); |
1568 | // new | |
1569 | directElec->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
1570 | directElec->SetGrandMotherPDGs(902,902,kTRUE,kTRUE); // exclude open charm,beauty hadrons | |
2d109362 JB |
1571 | |
1572 | ||
1573 | AliDielectronSignalMC* elecPrim = new AliDielectronSignalMC("elecPrim","elecPrim"); | |
1574 | elecPrim->SetLegPDGs(11,1); //dummy second leg (never MCtrue) | |
1575 | elecPrim->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1576 | elecPrim->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
1577 | elecPrim->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
6720a01a | 1578 | elecPrim->SetMotherPDGs(902,902,kTRUE,kTRUE); // exclude open charm,beauty hadrons |
2d109362 | 1579 | elecPrim->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); |
6720a01a | 1580 | elecPrim->SetGrandMotherPDGs(902,902,kTRUE,kTRUE); // exclude open charm,beauty hadrons |
2d109362 JB |
1581 | elecPrim->SetFillPureMCStep(kTRUE); |
1582 | ||
1583 | // add direct di lepton resonances | |
1584 | /* | |
1585 | AliDielectronSignalMC* directP[7]; | |
1586 | TParticlePDG *ap; | |
1587 | Int_t pdg[] = {111, 113, 221, 223, 331, 333, 443}; | |
1588 | for(Int_t i=0; i<7; i++) { | |
1589 | ap = TDatabasePDG::Instance()->GetParticle(pdg[i]); | |
1590 | directP[i] = new AliDielectronSignalMC(Form("direct%s",ap->GetName()),Form("direct%s",ap->GetName())); | |
1591 | directP[i]->SetLegPDGs(11,-11); | |
1592 | directP[i]->SetMotherPDGs(pdg[i],pdg[i]); | |
1593 | directP[i]->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1594 | directP[i]->SetFillPureMCStep(kTRUE); | |
1595 | directP[i]->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
1596 | directP[i]->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect); | |
1597 | // directP[i]->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1598 | // directP[i]->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
1599 | } | |
1600 | */ | |
1601 | ||
79284309 | 1602 | /* |
1603 | AliDielectronSignalMC* eleHijing = new AliDielectronSignalMC("eleHijing","eleHijing"); | |
1604 | eleHijing->SetLegPDGs(11,1); //dummy second leg (never MCtrue) | |
1605 | eleHijing->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1606 | eleHijing->SetLegSources(AliDielectronSignalMC::kNoCocktail, AliDielectronSignalMC::kNoCocktail); | |
1607 | eleHijing->SetFillPureMCStep(kTRUE); | |
1608 | */ | |
1609 | /* | |
1610 | AliDielectronSignalMC* electrons = new AliDielectronSignalMC("electrons","electrons"); | |
1611 | electrons->SetLegPDGs(11,-11); //dummy second leg (never MCtrue) | |
1612 | electrons->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
1613 | electrons->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
1614 | // electrons->SetMotherPDGs(111,111,kTRUE,kTRUE); // not from pi0 | |
1615 | // electrons->SetMothersRelation(AliDielectronSignalMC::kSame); | |
1616 | electrons->SetFillPureMCStep(kTRUE); | |
1617 | */ | |
1618 | ||
1619 | // selection | |
1620 | switch(cutDefinition) { | |
2d109362 | 1621 | case kPIDqa: |
359a5e52 | 1622 | return; |
6720a01a | 1623 | //die->AddSignalMC(directElec); |
2d109362 | 1624 | break; |
79284309 | 1625 | case kRec: |
1626 | die->AddSignalMC(inclusiveJpsi); | |
1627 | die->AddSignalMC(directJpsi); | |
1628 | break; | |
6720a01a | 1629 | case kStd: |
79284309 | 1630 | die->AddSignalMC(inclusiveJpsi); |
1631 | // die->AddSignalMC(beautyJpsi); | |
1632 | //die->AddSignalMC(promptJpsi); | |
1633 | //die->AddSignalMC(promptJpsiRad); | |
1634 | //die->AddSignalMC(promptJpsiNonRad); | |
1635 | die->AddSignalMC(directJpsi); | |
1636 | // die->AddSignalMC(gammaConversion); | |
1637 | break; | |
359a5e52 JB |
1638 | case kAvgPt: |
1639 | die->AddSignalMC(inclusiveJpsi); | |
6720a01a | 1640 | // die->AddSignalMC(directJpsi); |
359a5e52 | 1641 | break; |
79284309 | 1642 | case kLegEff: |
2d109362 JB |
1643 | // die->AddSignalMC(directJpsi); |
1644 | // die->AddSignalMC(inclusiveJpsi); | |
1645 | // die->AddSignalMC(electrons); | |
1646 | // die->AddSignalMC(elecPrim); | |
1647 | die->AddSignalMC(directElec); | |
1648 | //for(Int_t i=0; i<7; i++) die->AddSignalMC(directP[i]); | |
1649 | break; | |
1650 | default: | |
79284309 | 1651 | die->AddSignalMC(directJpsi); |
79284309 | 1652 | break; |
8c06b662 | 1653 | } |
1654 | ||
8c06b662 | 1655 | |
79284309 | 1656 | } |
1657 | ||
6720a01a | 1658 | void SetEtaCorrection(AliDielectron *die) { |
359a5e52 | 1659 | |
79284309 | 1660 | |
6720a01a | 1661 | // if(cutDefinition==kLegEff) return; |
1662 | // if (pid->GetCentroidCorrFunction()) return; | |
1663 | Bool_t hasMC=die->GetHasMC(); | |
1664 | Bool_t hasTuneOnData=kFALSE; | |
1665 | // ((AliAnalysisTaskPIDResponse*)AliAnalysisManager::GetAnalysisManager()->GetTasks()->At(0))->GetTuneOnData(); | |
1666 | printf("tune on data switched: %d \n",hasTuneOnData); | |
1667 | // printf("name task at 0: %s \n",AliAnalysisManager::GetAnalysisManager()->GetTasks()->At(0)->GetName()); | |
1668 | // printf("input event %p \n", AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()); | |
1669 | // printf("pid response %p \n",((AliInputEventHandler*)AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler())->GetPIDResponse()); | |
1670 | // printf("pid response task %p \n",AliAnalysisManager::GetAnalysisManager()->GetTasks()->At(0)); | |
1671 | // AliAnalysisManager::GetAnalysisManager()->GetTasks()->At(0)->Dump();; | |
1672 | ||
1673 | // AliAnalysisManager* man = AliAnalysisManager::GetAnalysisManager(); | |
1674 | // AliInputEventHandler* inputHandler = dynamic_cast<AliInputEventHandler*>(man->GetInputEventHandler()); | |
1675 | // AliPIDResponse* pidResponse = inputHandler->GetPIDResponse(); | |
1676 | // if(pidResponse) hasTuneOnData = pidResponse->IsTunedOnData(); | |
1677 | // printf("man %p inp %p pid %p ====> %d \n",man,inputHandler,pidResponse,hasTuneOnData); | |
79284309 | 1678 | |
1679 | TF2 *fCntrdCorr=0x0; | |
1680 | TF1 *fWdthCorr=0x0; | |
1681 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv DATA vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ | |
1682 | // either data or MC with tune on data option | |
6720a01a | 1683 | if( !hasMC /*|| hasTuneOnData*/ ) { |
79284309 | 1684 | // 2-dimensional eta correction for the centroid of electron sigmas |
359a5e52 JB |
1685 | fCntrdCorr = new TF2("fCntrdCorr", |
1686 | "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x", | |
79284309 | 1687 | // 0.0, 3000.0, -0.9, +0.9); |
1688 | 0.0, 90.0, -0.9, +0.9); | |
359a5e52 JB |
1689 | // fCntrdCorr->SetParameters(0.723106, 0.23958, -6.31221, -0.687976, 15.912, 0.579609, -11.6901, -0.000354381); //Nacc dep. |
1690 | fCntrdCorr->SetParameters(+0.149002, +0.214644 , -6.034930, -0.529588, +14.97902, +0.402640, -10.890027, +0.011248); //Cent | |
79284309 | 1691 | |
1692 | // 1-dimensional eta correction for the width of electron sigmas | |
1693 | fWdthCorr = new TF1("fWdthCorr", "pol2", 0.0, 90.0); | |
1694 | // fWdthCorr->SetParameters(1.06108, 0.000217804,-5.80291e-08); //Nacc dep. | |
1695 | fWdthCorr->SetParameters(+1.290755, -0.005261, +0.000021); //Cent dep. | |
1696 | ||
1697 | // apply corrections | |
6720a01a | 1698 | // die->SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kNacc,AliDielectronVarManager::kEta); |
1699 | // die->SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kNacc); | |
1700 | die->SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kEta); | |
1701 | die->SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kCentrality); | |
79284309 | 1702 | printf(" DATA PID correction loaded!!!\n"); |
8c06b662 | 1703 | } |
79284309 | 1704 | else { |
1705 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MONTE CARLO vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ | |
6720a01a | 1706 | // 2-dimensional eta correction for the centroid and width of electron sigmas |
1707 | fCntrdCorr = new TF2("fCntrdCorr", | |
1708 | "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x", | |
1709 | 0.0, 3000.0, -0.9, +0.9); | |
1710 | fCntrdCorr->SetParameters(+0.293718, | |
1711 | +0.010037, | |
1712 | -2.632949, | |
1713 | -0.241412, | |
1714 | +8.304244, | |
1715 | +0.525481, | |
1716 | -4.874357, | |
1717 | -0.000103); //TPCrefMult dep. | |
1718 | fWdthCorr = new TF2("fWdthCorr", | |
1719 | "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x", | |
1720 | 0.0, 3000.0, -0.9, +0.9); | |
1721 | fWdthCorr->SetParameters(+0.917840, | |
1722 | -0.021500, | |
1723 | -0.628371, | |
1724 | +0.230847, | |
1725 | +1.434907, | |
1726 | -0.330751, | |
1727 | -0.458941, | |
1728 | +0.000036); //TPCrefMult dep. | |
1729 | ||
1730 | // apply corrections | |
1731 | die->SetCentroidCorrFunction(fCntrdCorr, | |
1732 | AliDielectronVarManager::kRefMultTPConly, | |
1733 | AliDielectronVarManager::kEta); | |
1734 | die->SetWidthCorrFunction(fWdthCorr, | |
1735 | AliDielectronVarManager::kRefMultTPConly, | |
1736 | AliDielectronVarManager::kEta); | |
1737 | /* | |
79284309 | 1738 | // 2-dimensional eta correction for the centroid of electron sigmas |
1739 | fCntrdCorr = new TF2("fCntrdCorr", "[0] + [1]*y + [2]*y*y + [3]*TMath::Power(y,3) + [4]*TMath::Power(y,4) + [5]*TMath::Power(y,5) + [6]*TMath::Power(y,6) + [7]*x", | |
1740 | 0.0, 3000.0, -0.9, +0.9); | |
1741 | fCntrdCorr->SetParameters(+0.378611, -0.070831, -3.076778, +0.121977, +8.576097, +0.113009, -5.001368, -0.000181); | |
1742 | // 1-dimensional eta correction for the width of electron sigmas | |
1743 | fWdthCorr = new TF1("fWdthCorr", "pol1", 0.0, 3000.0); | |
1744 | fWdthCorr->SetParameters(+0.881894, +0.000053); | |
1745 | ||
1746 | // apply corrections | |
6720a01a | 1747 | die->SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kNacc,AliDielectronVarManager::kEta); |
1748 | die->SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kNacc); | |
1749 | // die->SetCentroidCorrFunction(fCntrdCorr,AliDielectronVarManager::kCentrality,AliDielectronVarManager::kEta); | |
1750 | // die->SetWidthCorrFunction(fWdthCorr,AliDielectronVarManager::kCentrality); | |
1751 | */ | |
359a5e52 | 1752 | printf(" MC PID correction loaded!!!\n"); |
79284309 | 1753 | } |
1754 | ||
1755 | ||
8c06b662 | 1756 | } |
1757 | ||
79284309 | 1758 | TVectorD *GetRunNumbers2011() { |
d28542ba | 1759 | |
1760 | Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai | |
1761 | 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 | 1762 | }; |
d28542ba | 1763 | Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai |
79284309 | 1764 | 167915, 167920, 167985, 167987, 167988, 168069, 168076, 168105, 168107, 168108, 168115, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362, 168458, 168460, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168988, 168992, 169035, 169040, 169044, 169045, 169091, 169094, 169099, 169138, 169144, 169145, 169148, 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169418, 169419, 169420, 169475, 169498, 169504, 169506, 169512, 169515, 169550, 169553, 169554, 169555, 169557, 169586, 169587, 169588, 169590, 169591, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 169923, 169965, 170027, 170040, 170081, 170083, 170084, 170085, 170088, 170089, 170091, 170155, 170159, 170163, 170193, 170203, 170204, 170207, 170228, 170230, 170268, 170269, 170270, 170306, 170308, 170309, 170311, 170312, 170313, 170315, 170387, 170388, 170572, 170593, |
1765 | 170593+1 | |
d28542ba | 1766 | }; |
79284309 | 1767 | /* |
2d7910f3 | 1768 | if(list.Contains("LHC10h") || list.Contains("LHC11a10")) { |
2d7910f3 | 1769 | if( list.Contains("LHC11h") || list.Contains("LHC12a17") ) { |
79284309 | 1770 | */ |
1771 | Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t)); | |
1772 | TVectorD *vec = new TVectorD(size,runLHC11h); | |
1773 | //vec->Print(""); | |
256b2ae5 | 1774 | return vec; |
8c06b662 | 1775 | } |
2ed1b6ff | 1776 | |
2d109362 JB |
1777 | TVectorD *GetPDGcodes() { |
1778 | // | |
1779 | // array of pdgcodes stored in TDatabasePDG | |
1780 | // | |
1781 | TDatabasePDG *pdg = new TDatabasePDG(); | |
1782 | pdg->ReadPDGTable(); | |
1783 | TGraph *gr = new TGraph(); | |
1784 | TIter next(pdg->ParticleList()); | |
1785 | TParticlePDG *p; | |
1786 | Int_t i=0; | |
1787 | while ((p = (TParticlePDG *)next())) { | |
1788 | if(TMath::Abs(p->PdgCode()) < 1e+6) { | |
1789 | // printf("%s -> %d \n",p->GetName(),p->PdgCode()); | |
1790 | gr->SetPoint(i++, p->PdgCode(),1.); | |
1791 | } | |
1792 | } | |
1793 | gr->Sort(); | |
1794 | TVectorD *vec = new TVectorD(gr->GetN(), gr->GetX()); | |
1795 | // vec->Print(); | |
1796 | delete pdg; | |
1797 | delete gr; | |
1798 | return vec; | |
1799 | ||
1800 | } | |
1801 | ||
2ed1b6ff | 1802 | TVectorD *GetDeltaPhiBins() { |
1803 | // | |
1804 | // for in and out of event plane bins | |
1805 | // | |
1806 | Double_t pi = TMath::Pi(); | |
1807 | TVectorD *deltaPhi = new TVectorD(6); | |
1808 | (*deltaPhi)[0] = -1. *pi; | |
1809 | (*deltaPhi)[1] = -3./4. *pi; | |
1810 | (*deltaPhi)[2] = -1./4. *pi; | |
1811 | (*deltaPhi)[3] = +1./4. *pi; | |
1812 | (*deltaPhi)[4] = +3./4. *pi; | |
1813 | (*deltaPhi)[5] = +1. *pi; | |
1814 | return deltaPhi; | |
1815 | } |