1 #ifndef ALIANALYSISTASKSE_H
10 #include <TProfile2D.h>
18 #include <THnSparse.h>
21 #include <TClonesArray.h>
25 #include <TInterpreter.h>
26 #include "AliAnalysisTask.h"
27 #include "AliCentrality.h"
29 #include "AliESDEvent.h"
30 #include "AliESDInputHandler.h"
31 #include "AliAODEvent.h"
32 #include "AliAODHandler.h"
33 #include "AliAnalysisManager.h"
34 #include "AliAnalysisTaskSE.h"
37 #include "AliInputEventHandler.h"
42 #include "AliGenEventHeader.h"
43 #include "AliGenPythiaEventHeader.h"
44 #include "AliGenHijingEventHeader.h"
45 #include "AliAODMCHeader.h"
46 #include "AliMCEvent.h"
50 #include "AliVEventHandler.h"
51 #include "AliVParticle.h"
52 #include "AliAODMCParticle.h"
53 #include "AliAnalysisUtils.h"
56 #include "AliVVertex.h"
65 #include "AliHeader.h"
66 #include "AliRunLoader.h"
67 #include "AliVVZERO.h"
68 #include "AliAODZDC.h"
82 fUseDefaultVertexCut(1), fUsePileUpCut(1),
83 fRhoTaskName(), fRhoTaskNameMC(),
84 fSignalJetRadius(0.4), fSignalJetRadiusSquared(fSignalJetRadius*fSignalJetRadius),
85 fSignalJetEtaWindow(0.9 - fSignalJetRadius), fTrackEtaWindow(0.9), fMinTrackPt(0.150), fMinJetArea(0.0),
86 fCentralityType("V0A"), fMinFractionShared(0.5),
87 fCrossSection(0.0), fTrials(0.0), fImpParam(-1.0), fRandom(0), fHelperClass(0), fInitializedLocal(0),
88 fDphiCut(TMath::Pi()-0.6), fUseDoubleBinPrecision(0),
89 fHistEvtSelection(0x0),fhKTAreaPt(0x0),
90 fhVertexZ(0x0), fhVertexZAccept(0x0), fhVertexZMC(0x0), fhVertexZAcceptMC(0x0),
91 fhDphiTriggerJetAccept(0x0),
92 fhCentralityV0M(0x0), fhCentralityV0A(0x0), fhCentralityV0C(0x0), fhCentralityZNA(0x0),
93 fCentralityBins(kCAll),
95 fZVertexCut(10.0),fCutPhi(0.6),
99 for(Int_t it=0; it<kTT;it++){
100 fRhoRec[it].Set(kRho);
101 fRhoMC[it].Set(kRho);
103 fhCentralityTT[it] = NULL;
106 for(Int_t ic =0; ic<kCAll; ic++){
107 for(Int_t it=0; it<kTT;it++){
108 fh1Ntriggers[ic][it]=NULL;
109 fh1TriggerMult[ic][it]=NULL;
110 fh1NtriggersGen[ic][it]=NULL;
111 fh1TriggerMultGen[ic][it]=NULL;
114 fhImpactParameterTT[ic][it]=NULL;
116 for(Int_t ir=0; ir<kRho; ir++){
117 fhDphiTriggerJet[ic][it][ir]=NULL;
118 fhDphiTriggerJetGen[ic][it][ir]=NULL;
119 fHJetSpec[ic][it][ir]=NULL;
120 fHJetSpecGen[ic][it][ir]=NULL;
122 fhDeltaPt[ic][it][ir]=NULL;
123 fhDeltaPtEmb[ic][it][ir]=NULL;
124 fhDeltaPtEmb2D[ic][it][ir]=NULL;
125 fhDeltaPtEmbPerp[ic][it][ir]=NULL;
126 fhDeltaPtEmbPerp2D[ic][it][ir]=NULL;
127 fhDeltaPtEmbBc2Bc[ic][it][ir]=NULL;
128 fhDeltaPtEmbBc2Bc2D[ic][it][ir]=NULL;
130 fhRhoTT[ic][it][ir]=NULL;
131 fARhoTT[ic][it][ir]=NULL;
134 fhVzeroATotMultTT[ic][it]=NULL;
135 fhZNAEnergyTT[ic][it]=NULL;
136 fhTrackMultiplicityTT[ic][it]=NULL;
137 fhZNAVzeroATrackTT[ic][it]=NULL;
140 fhJetPhiGen[ic]=NULL;
143 fhJetEtaGen[ic]=NULL;
146 fhTrackPtGen[ic]=NULL;
147 fhCentrality[ic]=NULL;
148 fhVzeroATotMult[ic]=NULL;
149 fhZNAEnergy[ic]=NULL;
150 fhTrackMultiplicity[ic]=NULL;
151 fhZNAVzeroATrack[ic]=NULL;
152 fhImpactParameter[ic]=NULL;
154 for(Int_t ir=0; ir<kRho; ir++){
155 fhJetPtGen[ic][ir]=NULL;
156 fhJetPtGenVsJetPtRec[ic][ir]=NULL;
157 fhJetPtResolutionVsPtGen[ic][ir]=NULL;
161 for(Int_t ir=0; ir<kRho-1; ir++){
162 fhRhoIncl[ic][ir]=NULL;
163 fhDeltaPtIncl[ic][ir]=NULL;
166 fhPtTrkTruePrimRec[ic]=NULL;
167 fhPtTrkTruePrimGen[ic]=NULL;
168 fhPtTrkSecOrFakeRec[ic]=NULL;
171 fCentralityBins[0]=0.;
172 fCentralityBins[1]=20.;
173 fCentralityBins[2]=50.;
174 fCentralityBins[3]=100.;
175 fCentralityBins[4]=1e6;
185 for(Int_t i=0; i<999; i++){
188 for(Int_t it=0; it<kTT; it++){
189 fTrigTracksGen[it][i]=0x0;
190 fTrigTracks[it][i]=0x0;
205 fUseDefaultVertexCut(1), fUsePileUpCut(1),
206 fRhoTaskName(), fRhoTaskNameMC(),
207 fSignalJetRadius(0.4), fSignalJetRadiusSquared(fSignalJetRadius*fSignalJetRadius),
208 fSignalJetEtaWindow(0.9 - fSignalJetRadius), fTrackEtaWindow(0.9), fMinTrackPt(0.150), fMinJetArea(0.0),
209 fCentralityType(
"V0A"), fMinFractionShared(0.5),
210 fCrossSection(0.0), fTrials(0.0), fImpParam(-1.0), fRandom(0), fHelperClass(0), fInitializedLocal(0),
211 fDphiCut(TMath::Pi()-0.6), fUseDoubleBinPrecision(0),
212 fHistEvtSelection(0x0), fhKTAreaPt(0x0),
213 fhVertexZ(0x0), fhVertexZAccept(0x0), fhVertexZMC(0x0), fhVertexZAcceptMC(0x0),
214 fhDphiTriggerJetAccept(0x0),
215 fhCentralityV0M(0x0), fhCentralityV0A(0x0), fhCentralityV0C(0x0), fhCentralityZNA(0x0),
217 fCentralityBins(kCAll),
219 fZVertexCut(10.0),fCutPhi(0.6),
223 for(Int_t it=0; it<
kTT;it++){
230 for(Int_t ic =0; ic<
kCAll; ic++){
231 for(Int_t it=0; it<
kTT;it++){
240 for(Int_t ir=0; ir<
kRho; ir++){
277 for(Int_t ir=0; ir<
kRho; ir++){
284 for(Int_t ir=0; ir<kRho-1; ir++){
309 for(Int_t i=0; i<999; i++){
311 for(Int_t it=0; it<
kTT; it++){
323 DefineOutput(1, TList::Class());
336 Double_t tmpConePt = 0.0;
338 if(!recTrkCont)
return 0.0;
340 AliVParticle* tmpTrack=NULL;
343 recTrkCont->ResetCurrentID();
345 if(!tmpTrack)
continue;
347 if(
GetDeltaR(tmpTrack->Phi(), phi, tmpTrack->Eta(), eta) < radius){
348 tmpConePt = tmpConePt + tmpTrack->Pt();
359 AliGenHijingEventHeader* hijingHeader =
dynamic_cast<AliGenHijingEventHeader*
>(MCEvent()->GenEventHeader());
363 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
366 for(UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++){
367 hijingHeader =
dynamic_cast<AliGenHijingEventHeader*
>(aodMCH->GetCocktailHeader(i));
368 if(hijingHeader)
break;
374 return (Double_t) (hijingHeader->ImpactParameter());
376 AliWarning(Form(
"In task %s: GetImpactParameter() failed!", GetName()));
383 AliGenEventHeader* mcHeader = NULL;
384 AliAODMCHeader* aodMCH = NULL;
387 AliRunLoader *rl = AliRunLoader::Instance();
388 if(rl) mcHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(rl->GetHeader()->GenEventHeader());
394 mcHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
397 aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
400 for(UInt_t i = 0; i<aodMCH->GetNCocktailHeaders(); i++){
401 mcHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
409 mcHeader =
dynamic_cast<AliGenHijingEventHeader*
>(MCEvent()->GenEventHeader());
412 aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
415 for(UInt_t i = 0; i<aodMCH->GetNCocktailHeaders(); i++){
416 mcHeader =
dynamic_cast<AliGenHijingEventHeader*
>(aodMCH->GetCocktailHeader(i));
428 mcHeader->PrimaryVertex(
fpyVtx);
429 return (Double_t) (
fpyVtx[2]);
431 AliWarning(Form(
"In task %s: Pythia Vertex failed!", GetName()));
439 if(!event)
return kFALSE;
463 if(!event)
return kFALSE;
476 fhVertexZ->Fill(event->GetPrimaryVertex()->GetZ());
484 if(TMath::Abs(event->GetPrimaryVertex()->GetZ()) >
fZVertexCut){
499 if(!track)
return kFALSE;
503 if(!track->Charge())
return kFALSE;
505 if(!(static_cast<AliAODMCParticle*>(track))->IsPhysicalPrimary())
return kFALSE;
520 if(!jet)
return kFALSE;
556 for(Int_t ir=0;ir<nrho;ir++){
561 Bool_t coneValid = kTRUE;
563 Double_t tmpRandConePhi =
fRandom->Rndm()*TMath::TwoPi();
568 tmpRandConePhi =
fRandom->Rndm()*TMath::TwoPi();
618 for(Int_t ir=0; ir < nrho; ir++){
632 AliError(
"??? Event pointer == 0 ???");
661 Double_t centralityPercentile = -1.0;
662 Double_t centralityPercentileV0A = -1.0;
663 Double_t centralityPercentileV0C = -1.0;
664 Double_t centralityPercentileV0M = -1.0;
665 Double_t centralityPercentileZNA = -1.0;
666 Double_t multVzero = -1.0;
667 Double_t energyZdcNA = -1.0;
671 if(InputEvent()->GetVZEROData()){
672 multVzero = InputEvent()->GetVZEROData()->GetMTotV0A();
682 AliVZDC *aodZDC =
dynamic_cast<AliVZDC*
> (InputEvent()->GetZDCData());
684 const Double_t *ZNAtower = aodZDC->GetZNATowerEnergy();
685 energyZdcNA = ZNAtower[0]*4.*82./208./12.96;
689 AliCentrality* tmpCentrality = InputEvent()->GetCentrality();
694 centralityPercentile = tmpCentrality->GetCentralityPercentile(
fCentralityType.Data());
695 centralityPercentileV0A = tmpCentrality->GetCentralityPercentile(
"V0A");
696 centralityPercentileV0C = tmpCentrality->GetCentralityPercentile(
"V0C");
697 centralityPercentileV0M = tmpCentrality->GetCentralityPercentile(
"V0M");
698 centralityPercentileZNA = tmpCentrality->GetCentralityPercentile(
"ZNA");
702 AliWarning(Form(
"Centrality value not valid (c=%E)",centralityPercentile));
716 for(Int_t ic=0; ic<2; ic++){
717 if(
ficb[ic]==-1)
continue;
728 for(Int_t ic=0; ic<2; ic++){
729 if(
ficb[ic]==-1)
continue;
757 AliVParticle *constTrackRec = NULL;
758 AliVParticle *constTrackGen = NULL;
795 Int_t indexSingleRndTrigGen[
kTT] = {-1,-1};
796 AliVParticle* trackTTGen[
kTT] = {NULL,NULL};
797 Int_t ntriggersGen[
kTT] = {0,0};
803 parContGen->ResetCurrentID();
805 if(!constTrackGen)
continue;
808 for(Int_t ic=0; ic<2; ic++){
809 if(
ficb[ic]==-1)
continue;
813 for(Int_t it=0; it<
kTT; it++){
814 if((
fTTlow[it] <= constTrackGen->Pt()) && (constTrackGen->Pt() <
fTThigh[it])){
815 if(ntriggersGen[it]<999){
826 for(Int_t it=0; it<
kTT; it++){
827 for(Int_t ic=0; ic<2; ic++){
828 if(
ficb[ic]==-1)
continue;
832 if(ntriggersGen[it]>0){
833 indexSingleRndTrigGen[it] =
fRandom->Integer(ntriggersGen[it]);
834 trackTTGen[it] = (AliVParticle*) (
fTrigTracksGen[it][indexSingleRndTrigGen[it]]);
842 Int_t indexSingleRndTrig[
kTT] = {-1,-1};
843 AliVParticle* trackTT[
kTT] = {NULL,NULL};
844 Int_t ntriggers[
kTT] = {0, 0};
849 trkContRec->ResetCurrentID();
851 if(!constTrackRec)
continue;
856 if(TMath::Abs(constTrackRec->GetLabel()) == 99999)
continue;
862 for(Int_t ic=0; ic<2; ic++){
863 if(
ficb[ic]==-1)
continue;
865 fhTrackEta[
ficb[ic]]->Fill(constTrackRec->Pt(), constTrackRec->Eta());
869 for(Int_t it=0; it<
kTT; it++){
870 if(
fTTlow[it] <= constTrackRec->Pt() && constTrackRec->Pt() <
fTThigh[it]){
871 if(ntriggers[it]<999){
882 for(Int_t it=0; it<
kTT; it++){
883 for(Int_t ic=0; ic<2; ic++){
884 if(
ficb[ic]==-1)
continue;
889 indexSingleRndTrig[it] =
fRandom->Integer(ntriggers[it]);
890 trackTT[it] = (AliVParticle*) (
fTrigTracks[it][indexSingleRndTrig[it]]);
899 for(Int_t it=0;it<
kTT;it++){
904 for(Int_t it=0;it<
kTT;it++){
942 parContGen->ResetCurrentID();
944 if(!constTrackGen)
continue;
947 for(Int_t ic=0; ic<2; ic++){
948 if(
ficb[ic]==-1)
continue;
955 Bool_t bRecPrim = kFALSE;
956 if(trkContRec && parContGen){
957 trkContRec->ResetCurrentID();
959 if(!constTrackRec)
continue;
963 parContGen->ResetCurrentID();
965 if(!constTrackGen)
continue;
967 if(TMath::Abs(constTrackRec->GetLabel()) == TMath::Abs(constTrackGen->GetLabel())){
971 for(Int_t ic=0; ic<2; ic++){
972 if(
ficb[ic]==-1)
continue;
979 for(Int_t ic=0; ic<2; ic++){
980 if(
ficb[ic]==-1)
continue;
996 jetContGen->ResetCurrentID();
998 if(!jetGen)
continue;
1003 for(Int_t ir=0; ir<
kRho; ir++){
1006 for(Int_t ic=0; ic<2; ic++){
1007 if(
ficb[ic]==-1)
continue;
1016 jetContRec->ResetCurrentID();
1018 if(!jetRec)
continue;
1031 if(jetGen->
Pt()<1e-3){
1047 for(Int_t ir=0; ir<
kRho; ir++){
1051 for(Int_t ic=0; ic<2; ic++){
1052 if(
ficb[ic]==-1)
continue;
1073 Double_t areaJet, pTJet;
1075 Bool_t bFirstCycle = kTRUE;
1082 for(Int_t it=0; it<
kTT; it++){
1083 if(parContGen && ntriggersGen[it] >0 && ((AliVParticle*)trackTTGen[it])){
1084 bFirstCycle = kTRUE;
1086 AliVParticle* triggerHadronGen = (AliVParticle*) trackTTGen[it];
1087 if(!triggerHadronGen)
continue;
1089 for(Int_t ic=0; ic<2; ic++){
1090 if(
ficb[ic]==-1)
continue;
1100 jetContGen->ResetCurrentID();
1103 AliError(Form(
"%s: Could not receive gen jet", GetName()));
1108 areaJet = jetGen->
Area();
1109 pTJet = jetGen->
Pt();
1111 if(bFirstCycle && it==
kRef){
1112 for(Int_t ic=0; ic<2; ic++){
1113 if(
ficb[ic]==-1)
continue;
1123 if(dfi < -0.5*TMath::Pi()) dfi += TMath::TwoPi();
1124 if(dfi > 1.5*TMath::Pi()) dfi -= TMath::TwoPi();
1126 for(Int_t ir=0; ir<
kRho;ir++){
1127 for(Int_t ic=0; ic<2; ic++){
1128 if(
ficb[ic]==-1)
continue;
1134 if(TMath::Abs(dphi) <
fDphiCut)
continue;
1138 for(Int_t ir=0; ir<
kRho;ir++){
1140 for(Int_t ic=0; ic<2; ic++){
1141 if(
ficb[ic]==-1)
continue;
1146 bFirstCycle = kFALSE;
1157 for(Int_t it=0; it<
kTT; it++){
1169 Bool_t bEmbJetCloseToTT = kFALSE;
1172 jetContRec->ResetCurrentID();
1174 if(!jetRec)
continue;
1178 bEmbJetCloseToTT = kFALSE;
1180 if(jetRec->
Pt() > trackTT[it]->Pt()*0.5){
1183 constTrackRec =
static_cast<AliVParticle*
> (jetRec->
TrackAt(iq,trkContRec->GetArray()));
1184 if(!constTrackRec)
continue;
1185 if(constTrackRec != ((AliVParticle*) trackTT[it]))
continue;
1187 bEmbJetCloseToTT = kTRUE;
1192 if(bEmbJetCloseToTT)
continue;
1200 if(jetEmb->
Pt()<1e-3){
1212 for(Int_t ir=0; ir <
kRho-1; ir++){
1213 for(Int_t ic=0; ic<2; ic++){
1214 if(
ficb[ic]==-1)
continue;
1225 dphi = TMath::Abs(
RelativePhi(trackTT[it]->Phi(), jetEmb->
Phi()));
1226 if(TMath::Pi()/4 < dphi && dphi < 3*TMath::Pi()/4){
1235 }
else if(dphi >= 3*TMath::Pi()/4 ){
1256 for(Int_t ir=0; ir <
kRho-1; ir++){
1257 for(Int_t ic=0; ic<2; ic++){
1258 if(
ficb[ic]==-1)
continue;
1263 for(Int_t it=0; it<
kTT;it++){
1264 if(ntriggers[it]>0){
1266 for(Int_t ir=0; ir < kRho-1; ir++){
1269 for(Int_t ic=0; ic<2; ic++){
1270 if(
ficb[ic]==-1)
continue;
1283 Double_t deltapt[kRho-1], phiTT = 0., etaTT = -1000.;
1286 Bool_t bRecJetCloseToTT = kFALSE;
1289 for(Int_t it=0; it<
kTT;it++){
1290 bRecJetCloseToTT = kFALSE;
1295 phiTT = trackTT[it]->Phi();
1296 etaTT = trackTT[it]->Eta();
1299 jetContRec->ResetCurrentID();
1301 if(!jetRec)
continue;
1305 bRecJetCloseToTT = kFALSE;
1307 if(jetRec->
Pt() > trackTT[it]->Pt()*0.5){
1309 constTrackRec = (AliVParticle*) (jetRec->
TrackAt(iq,trkContRec->GetArray()));
1310 if(!constTrackRec)
continue;
1311 if(constTrackRec != ((AliVParticle*) trackTT[it]))
continue;
1312 phiTT = jetRec->
Phi();
1313 etaTT = jetRec->
Eta();
1314 bRecJetCloseToTT = kTRUE;
1318 if(bRecJetCloseToTT)
break;
1326 GetDeltaPt(kRho-1, (
fRhoRec[it]), &deltapt[0], phiTT, etaTT, trkContRec, kFALSE);
1329 for(Int_t ir=0; ir < kRho-1; ir++){
1330 for(Int_t ic=0; ic<2; ic++){
1331 if(
ficb[ic]==-1)
continue;
1335 if(ntriggers[it]>0){
1349 trkContRec->ResetCurrentID();
1351 if(!constTrackRec)
continue;
1356 for(Int_t ic=0; ic<2; ic++){
1357 if(
ficb[ic]==-1)
continue;
1366 for(Int_t it=0; it<
kTT;it++){
1377 for(Int_t it=0; it<
kTT;it++){
1386 for(Int_t it=0; it<
kTT;it++){
1387 if(ntriggers[it]>0 && ((AliVParticle*) trackTT[it])){
1392 AliVParticle* triggerHadron = (AliVParticle*) trackTT[it];
1393 if(!triggerHadron)
continue;
1395 for(Int_t ic=0; ic<2; ic++){
1396 if(
ficb[ic]==-1)
continue;
1403 jetContRec->ResetCurrentID();
1406 AliError(Form(
"%s: Could not receive jet", GetName()));
1411 areaJet = jetRec->
Area();
1412 pTJet = jetRec->
Pt();
1414 if(bFirstCycle && it==
kRef){
1415 for(Int_t ic=0; ic<2; ic++){
1416 if(
ficb[ic]==-1)
continue;
1425 if(dfi < -0.5*TMath::Pi()) dfi += TMath::TwoPi();
1426 if(dfi > 1.5*TMath::Pi()) dfi -= TMath::TwoPi();
1428 for(Int_t ic=0; ic<2; ic++){
1429 if(
ficb[ic]==-1)
continue;
1431 for(Int_t ir=0; ir<
kRho;ir++){
1437 if(TMath::Abs(dphi) <
fDphiCut)
continue;
1442 for(Int_t ir=0; ir<
kRho;ir++){
1445 for(Int_t ic=0; ic<2; ic++){
1446 if(
ficb[ic]==-1)
continue;
1451 fARhoTT[
ficb[ic]][it][ir]->Fill((Float_t) (areaJet*fRhoRec[it][ir]));
1457 bFirstCycle = kFALSE;
1495 printf(
"ERROR: Output list not available\n");
1504 if(
fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
1521 TString bgtype[]={
"Perp",
"CMS",
"KT",
"Zero"};
1525 Bool_t oldStatus = TH1::AddDirectoryStatus();
1526 TH1::AddDirectory(kFALSE);
1535 fHistEvtSelection =
new TH1I(
"fHistEvtSelection",
"event selection", 7, -0.5, 6.5);
1547 for(Int_t it =0; it<
kTT; it++){
1548 for(Int_t ic =0; ic<icmax; ic++){
1549 name = (ic==0) ? Form(
"fh1NtriggersMB") :
1551 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1552 fh1Ntriggers[ic][it] =
new TH1D(name.Data(),
"# of triggers",50,0.0,50.0);
1555 name = (ic==0) ? Form(
"fh1TriggerMultMB") :
1557 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1558 fh1TriggerMult[ic][it] =
new TH1D(name.Data(),
"# of triggers",50,0.0,50.0);
1568 const Int_t dimSpec = 2;
1569 const Int_t nBinsSpec[dimSpec] = { 50, bw*160};
1570 const Double_t lowBinSpec[dimSpec] = { 0.0, -20.0};
1571 const Double_t hiBinSpec[dimSpec] = { 2.0, 300.0};
1573 for(Int_t ic =0; ic<icmax; ic++){
1574 for(Int_t it =0; it<
kTT; it++){
1575 for(Int_t ir=0; ir<
kRho; ir++){
1576 name = (ic==0) ?
"fHJetSpecMB" :
1579 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1583 Form(
"Recoil jet spectrum TT%d%d [A,pTjet-A*rho%s]",
1585 nBinsSpec[0], lowBinSpec[0], hiBinSpec[0], nBinsSpec[1], lowBinSpec[1],hiBinSpec[1]);
1593 for(Int_t ic =0; ic<icmax; ic++){
1594 for(Int_t ir=0; ir<
kRho-1; ir++){
1595 for(Int_t it=0; it<
kTT;it++){
1596 name = (ic==0) ?
"fhRhoMB" :
1600 name.Append(Form(
"TT%d%d%s",TMath::Nint(
fTTlow[it]),TMath::Nint(
fTThigh[it]),bgtype[ir].
Data()));
1603 fhRhoTT[ic][it][ir] =
new TH1F(name.Data(),
1604 Form(
"Rho%s",bgtype[ir].
Data()),80, 0.0, 40.0);
1609 name = (ic==0) ?
"fARhoMB" :
1613 name.Append(Form(
"TT%d%d%s",TMath::Nint(
fTTlow[it]),TMath::Nint(
fTThigh[it]),bgtype[ir].
Data()));
1614 fARhoTT[ic][it][ir] =
new TH1F(name.Data(),
1615 Form(
"Area times rho %s",bgtype[ir].
Data()),80, 0.0, 40.0);
1619 name = (ic==0) ? Form(
"fhRhoInclMB%s",bgtype[ir].
Data()) :
1629 for(Int_t it =0; it<
kTT; it++){
1630 for(Int_t ic =0; ic<icmax; ic++){
1631 for(Int_t ir=0; ir<
kRho-1; ir++){
1633 name = (ic==0) ?
"fhDeltaPtMB" :
1637 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1638 fhDeltaPt[ic][it][ir] =
new TH1D(name.Data(),
1639 Form(
"DeltaPt%s",bgtype[ir].
Data()), 150, -50, 100);
1644 name = (ic==0) ?
"fhDeltaPtInclMB" :
1648 name.Append(Form(
"%s", bgtype[ir].
Data()));
1656 name = (ic==0) ?
"fhDeltaPtEmbMB" :
1660 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1665 name = (ic==0) ?
"fhDeltaPtEmbPerpMB" :
1669 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1674 name = (ic==0) ?
"fhDeltaPtEmbBc2BcMB" :
1678 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1683 name = (ic==0) ?
"fhDeltaPtEmb2DMB" :
1687 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1689 Form(
"fhDeltaPtEmb2D%s",bgtype[ir].
Data()), 125,0, 250, 150, -50, 100);
1694 name = (ic==0) ?
"fhDeltaPtEmbPerp2DMB" :
1698 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1704 name = (ic==0) ?
"fhDeltaPtEmbBc2Bc2DMB" :
1708 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1719 Double_t binsPt [] = {0, 0.05,0.15, 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 5.5, 6.,6.5, 7., 8., 9., 10.,15., 20., 50., 100.};
1720 Int_t nbinsPt =
sizeof(binsPt)/
sizeof(Double_t)-1;
1722 fhKTAreaPt =
new TH2F(
"fhKTAreaPt",
"KT jet Area vs Pt",nbinsPt, binsPt, 50,0,2);
1727 for(Int_t ic =0; ic<icmax; ic++){
1728 name = (ic==0) ? Form(
"fhJetPhiMB") :
1732 fhJetPhi[ic] =
new TH2F(name.Data(),
"Azim dist jets vs pTjet", 50, 0, 100, 50,-TMath::Pi(),TMath::Pi());
1736 name = (ic==0) ? Form(
"fhTrackPhiMB") :
1740 fhTrackPhi[ic] =
new TH2F(name.Data(),
"azim dist trig had vs pT,trk", 50, 0, 50, 50,-TMath::Pi(),TMath::Pi());
1743 name = (ic==0) ? Form(
"fhJetEtaMB") :
1747 fhJetEta[ic] =
new TH2F(name.Data(),
"Eta dist jets vs pTjet", 50,0, 100, 40,-0.9,0.9);
1750 name = (ic==0) ? Form(
"fhTrackEtaMB") :
1754 fhTrackEta[ic] =
new TH2F(name.Data(),
"Eta dist trig had vs pT,trk", 50, 0, 50, 40,-0.9,0.9);
1757 name = (ic==0) ? Form(
"fhTrackPtMB") :
1761 fhTrackPt[ic] =
new TH1F(name.Data(),
"pT,trk ", 50, 0, 50);
1765 fhVertexZ =
new TH1F(
"fhVertexZ",
"z vertex",40,-20,20);
1768 fhVertexZAccept =
new TH1F(
"fhVertexZAccept",
"z vertex after cut",40,-20,20);
1773 fhVertexZMC =
new TH1F(
"fhVertexZMC",
"z vertex",40,-20,20);
1776 fhVertexZAcceptMC =
new TH1F(
"fhVertexZAcceptMC",
"z vertex after cut",40,-20,20);
1780 for(Int_t ic =0; ic<icmax; ic++){
1781 for(Int_t it =0; it<
kTT; it++){
1782 for(Int_t ir=0; ir <
kRho; ir++){
1784 Form(
"fhDphiTriggerJetMB") :
1787 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]) ,bgtype[ir].
Data()));
1789 fhDphiTriggerJet[ic][it][ir] =
new TH2F(name.Data(),
"Deltaphi trig-jet",75,-50,100, 100, -0.5*TMath::Pi(),1.5*TMath::Pi());
1796 fhDphiTriggerJetAccept =
new TH1F(
"fhDphiTriggerJetAccept",
"Deltaphi trig-jet after cut",50, -0.5*TMath::Pi(),1.5*TMath::Pi());
1799 for(Int_t ic =0; ic<icmax; ic++){
1800 name = (ic==0) ? Form(
"fhCentralityMB") :
1804 fhCentrality[ic] =
new TH1F(name.Data(),
"Centrality",20,0,100);
1808 fhCentralityV0M =
new TH1F(
"hCentralityV0M",
"hCentralityV0M",20,0,100);
1811 fhCentralityV0A =
new TH1F(
"hCentralityV0A",
"hCentralityV0A",20,0,100);
1814 fhCentralityV0C =
new TH1F(
"hCentralityV0C",
"hCentralityV0C",20,0,100);
1817 fhCentralityZNA =
new TH1F(
"hCentralityZNA",
"hCentralityZNA",20,0,100);
1820 for(Int_t it =0; it<
kTT;it++){
1821 name = Form(
"fhCentralityTT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]));
1827 for(Int_t ic =0; ic<icmax; ic++){
1828 name = (ic==0) ? Form(
"fhVzeroATotMultMB") :
1833 fhVzeroATotMult[ic] =
new TH1F(name.Data(),
"hVzeroATotMult",1000,0,1000);
1836 for(Int_t it=0; it<
kTT; it++){
1837 name = (ic==0) ?
"fhVzeroATotMultMB" :
1841 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1851 for(Int_t ic =0; ic<icmax; ic++){
1852 name = (ic==0) ? Form(
"fhZNAEnergyMB") :
1857 fhZNAEnergy[ic] =
new TH1F(name.Data(),
"fhZNAEnergy",1000,0,200);
1860 for(Int_t it=0; it<
kTT; it++){
1861 name = (ic==0) ? Form(
"fhZNAEnergyMB") :
1865 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1874 for(Int_t ic =0; ic<icmax; ic++){
1875 name = (ic==0) ? Form(
"fhTrackMultiplicityMB") :
1882 for(Int_t it=0; it<
kTT; it++){
1883 name = (ic==0) ? Form(
"fhTrackMultiplicityMB") :
1887 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1896 const Int_t dimZ = 3;
1897 const Int_t nBinsZ[dimZ] = { 100, 100, 25 };
1898 const Double_t lowBinZ[dimZ] = { 0.0, 0.0, 0.0};
1899 const Double_t hiBinZ[dimZ] = { 200.0, 1000.0, 250};
1901 for(Int_t ic =0; ic<icmax; ic++){
1902 name = (ic==0) ? Form(
"fhZNAVzeroATrackMB") :
1908 Form(
"ZNA, V0A mult, track mult"),
1909 dimZ, nBinsZ,lowBinZ,hiBinZ);
1914 for(Int_t it=0; it<
kTT; it++){
1916 name = (ic==0) ? Form(
"fhZNAVzeroATrackMB") :
1920 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1944 for(Int_t ic =0; ic<
kCAll; ic++){
1945 name = (ic==0) ? Form(
"fhImpactParameterMB") :
1949 fhImpactParameter[ic] =
new TH1D(name.Data(),
"impact parameter distribution from HIJING",50,0,10);
1953 for(Int_t it=0; it<
kTT;it++){
1954 name = (ic==0) ? Form(
"fhImpactParameterMB") :
1958 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1966 for(Int_t ic =0; ic<icmax; ic++){
1967 for(Int_t ir=0; ir <
kRho; ir++){
1968 name = (ic==0) ? Form(
"fhJetPtGenMB%s",bgtype[ir].
Data()) :
1973 Form(
"Jet pT Gen %s",bgtype[ir].
Data()),bw*160,-20,300);
1977 name = (ic==0) ? Form(
"fhJetPtGenVsJetPtRecMB%s",bgtype[ir].
Data()) :
1982 "", bw*160,-20,300, bw*160,-20,300);
1986 name = (ic==0) ? Form(
"fhJetPtResolutionVsPtGenMB%s",bgtype[ir].
Data()) :
1987 Form(
"fhJetPtResolutionVsPtGen%d%d%s",TMath::Nint(
fCentralityBins[ic-1]),
1991 "Resolution", 20,0,100, 35,-1.,0.4);
1996 Double_t bins [] = {0, 0.2,0.4,0.6, 0.8, 1., 1.2, 1.4, 1.6, 1.8, 2., 2.5, 3., 3.5, 4., 5., 6., 8., 10., 20., 50.};
1997 Int_t
nbins =
sizeof(bins)/
sizeof(Double_t)-1;
1999 for(Int_t ic =0; ic<icmax; ic++){
2000 name = (ic==0) ? Form(
"fhPtTrkTruePrimRecMB") :
2008 name = (ic==0) ? Form(
"fhPtTrkTruePrimGenMB") :
2015 name = (ic==0) ? Form(
"fhPtTrkSecOrFakeRecMB") :
2025 for(Int_t ic =0; ic<icmax; ic++){
2026 for(Int_t it=0; it<
kTT;it++){
2027 name = (ic==0) ? Form(
"fh1NtriggersGenMB") :
2030 name.Append(Form(
"TT%d%d",TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2036 name = (ic==0) ? Form(
"fh1TriggerMultGenMB") :
2040 name.Append(Form(
"TT%d%d",TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2045 for(Int_t ir=0; ir<
kRho; ir++){
2046 name = (ic==0) ?
"fHJetSpecGenMB" :
2050 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2056 name = (ic==0) ? Form(
"fhJetPhiGenMB") :
2063 name = (ic==0) ? Form(
"fhJetEtaGenMB") :
2071 name = (ic==0) ? Form(
"fhTrackPtGenMB") :
2078 for(Int_t it=0; it<
kTT; it++){
2079 for(Int_t ir=0; ir<
kRho; ir++){
2090 for(Int_t i=0; i<
fOutput->GetEntries(); i++){
2091 TH1 *h1 =
dynamic_cast<TH1*
>(
fOutput->At(i));
2096 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
2101 TH1::AddDirectory(oldStatus);
2127 if (vphi < -TMath::Pi()) vphi += TMath::TwoPi();
2128 else if (vphi > TMath::Pi()) vphi -= TMath::TwoPi();
2130 if (mphi < -TMath::Pi()) mphi += TMath::TwoPi();
2131 else if (mphi > TMath::Pi()) mphi -= TMath::TwoPi();
2133 Double_t dphi = mphi - vphi;
2134 if (dphi < -TMath::Pi()) dphi += TMath::TwoPi();
2135 else if (dphi > TMath::Pi()) dphi -= TMath::TwoPi();
2146 if(!trkCont)
return 0.0;
2149 AliVParticle* track = NULL;
2150 Double_t phiTT =
fRandom->Rndm()*TMath::TwoPi();
2152 Bool_t bTTJetFound = kFALSE;
2156 phiTT = triggerHadron->Phi();
2157 etaTT = triggerHadron->Eta();
2161 jetCont->ResetCurrentID();
2164 if(jet->
Pt() < triggerHadron->Pt()*0.5)
continue;
2168 track = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2169 if(!track)
continue;
2170 if(track != triggerHadron)
continue;
2174 bTTJetFound = kTRUE;
2177 if(bTTJetFound)
break;
2188 Double_t sumPt = 0.;
2190 trkCont->ResetCurrentID();
2192 if(!track)
continue;
2196 if(
GetDeltaR(phiTT, track->Phi(), etaTT, track->Eta()) <
fCutPhi)
continue;
2199 if(TMath::Abs(track->GetLabel()) == 99999)
continue;
2202 sumPt += track->Pt();
2211 area -= fCutPhi*fCutPhi*TMath::Pi();
2214 area -= (fCutPhi*fCutPhi*(TMath::Pi()-alpha) + fCutPhi*TMath::Sin(alpha)*(
fTrackEtaWindow - TMath::Abs(etaTT)));
2223 Double_t rhoKT = 0.0;
2225 if(!jetCont)
return rhoKT;
2228 AliVParticle* constTrack = NULL;
2229 Bool_t bKTJetCloseToTT = kFALSE;
2234 jetCont->ResetCurrentID();
2239 bKTJetCloseToTT = kFALSE;
2242 if(jet->
Pt() > triggerHadron->Pt()*0.5){
2244 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2245 if(!constTrack)
continue;
2246 if(constTrack == triggerHadron){
2247 bKTJetCloseToTT = kTRUE;
2253 if(bKTJetCloseToTT)
continue;
2258 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2259 if(!constTrack)
continue;
2260 if(TMath::Abs(constTrack->GetLabel()) == 99999){
2261 sumEmbPt += constTrack->Pt();
2266 jetpt = jet->
Pt()- sumEmbPt;
2269 if(jetpt <0.005) jetpt = 0.;
2275 rhoKT = TMath::Median(nJetAcc,
frhovec);
2283 Double_t rhoKTcms = 0.0;
2285 if(!jetCont)
return rhoKTcms;
2288 AliVParticle* constTrack = NULL;
2289 Bool_t bKTJetCloseToTT = kFALSE;
2291 Double_t areaPhysJets = 0.0;
2292 Double_t areaAllJets = 0.0;
2294 Double_t sumEmbPt = 0.;
2296 jetCont->ResetCurrentID();
2301 bKTJetCloseToTT = kFALSE;
2304 if(jet->
Pt() > triggerHadron->Pt()*0.5){
2306 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2307 if(!constTrack)
continue;
2308 if(constTrack != triggerHadron)
continue;
2309 bKTJetCloseToTT = kTRUE;
2314 if(bKTJetCloseToTT)
continue;
2319 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2320 if(!constTrack)
continue;
2321 if(TMath::Abs(constTrack->GetLabel()) == 99999){
2322 sumEmbPt += constTrack->Pt();
2328 areaAllJets += jet->
Area();
2330 jetpt = jet->
Pt()- sumEmbPt;
2333 areaPhysJets += jet->
Area();
2340 rhoKTcms = TMath::Median(nJetAcc,
frhovec)*(areaPhysJets/areaAllJets);
2350 Double_t deta = eta1 - eta2;
2351 return sqrt(dphi*dphi + deta*deta);
2359 if(!jRec)
return -1.0;
2360 if(!jconRec)
return -1.0;
2361 if(!jGen)
return -1.0;
2362 if(!jconGen)
return -1.0;
2364 Double_t fraction = 0., sumPt = 0.;
2365 Double_t jetPt2 = jGen->
Pt();
2367 AliVParticle *pgen, *prec;
2378 if(TMath::Abs(prec->GetLabel()) == TMath::Abs(pgen->GetLabel())){
2382 if(TMath::Abs(prec->Eta() - pgen->Eta()) > 1e-4)
continue;
2383 if(TMath::Abs(
RelativePhi(prec->Phi(), pgen->Phi())) > 1e-4)
continue;
2384 if(TMath::Abs(prec->Pt() - pgen->Pt()) > 1e-4)
continue;
2392 sumPt += pgen->Pt();
2399 fraction = sumPt/jetPt2;
Double_t GetDeltaR(Double_t phi1, Double_t phi2, Double_t eta1, Double_t eta2)
TH2D * fhPtTrkSecOrFakeRec[kCAll]
Double_t fSignalJetRadiusSquared
void SetTT(Double_t tlr, Double_t thr, Double_t tls, Double_t ths)
TH2F * fhJetPhiGen[kCAll]
gc jet phi vs jet pT
TH1F * fhVertexZ
gc X=centrality; Y= track pT
Double_t fTTlow[kTT]
gc trigger if tracks/jets are loaded initiates calling ExecOnce
Bool_t fUseDoubleBinPrecision
virtual AliVParticle * GetNextAcceptParticle()
TH1F * fhVzeroATotMultTT[kCAll][kTT]
V0A multiplicity for given V0A centrality selection.
AliVParticle * fTrigTracksGen[kTT][999]
TH1F * fhCentralityV0C
centrality from V0A
TH1F * fhVertexZAccept
gc vertexZ inclusive
AliEmcalJet * ClosestJet() const
TH2F * fhTrackPhi[kCAll]
gc jet phi vs jet pT
AliJetContainer * GetJetContainer(Int_t i=0) const
Double_t EstimateBgKTcms(AliJetContainer *jetCont, AliParticleContainer *trkArray, AliVParticle *triggerHadron)
Double_t GetImpactParameter()
TH2D * fhJetPtResolutionVsPtGen[kCAll][kRho]
Double_t EstimateBgCone(AliJetContainer *jetCont, AliParticleContainer *trkArray, AliVParticle *triggerHadron, Bool_t isGen=kFALSE)
TH2D * fhPtTrkTruePrimGen[kCAll]
TH2F * fhKTAreaPt
delta pT from RndCone using rho from perp cone inclusive event
Bool_t IsEventInAcceptance(AliVEvent *event)
ClassImp(AliAnalysisTaskHJetSpectra) AliAnalysisTaskHJetSpectra
TH1D * fhDeltaPtEmbPerp[kCAll][kTT][kRho-1]
embedded delta pT versus pT of the embedded jet
Bool_t IsSignalJetInAcceptance(AliEmcalJet *jet, Bool_t suppressGhost=1)
TH1D * fh1NtriggersGen[kCAll][kTT]
tirgger multiplicity in event
Bool_t fUseDefaultVertexCut
Bool_t RetrieveEventObjects()
TH1D * fh1TriggerMultGen[kCAll][kTT]
trigger counter
TH2F * fhJetEta[kCAll]
gc track phi vs track pT
TH2F * fhJetPhi[kCAll]
KT jets area versus PT.
TH1F * fhTrackPt[kCAll]
track eta vs track pT
TRandom3 * fRandom
impact parameter from hijing
Double_t fMinFractionShared
TH1D * fh1TriggerMult[kCAll][kTT]
trigger counter
TH1D * fhDeltaPtIncl[kCAll][kRho-1]
embedded delta pT versus pT of the embedded jet (emb track is backtoback in azimtuh w...
Container for particles within the EMCAL framework.
void UserCreateOutputObjects()
UShort_t GetNumberOfTracks() const
TH1F * fhCentralityTT[kTT]
centrality
virtual ~AliAnalysisTaskHJetSpectra()
Double_t GetFractionSharedPt(AliEmcalJet *jRec, AliJetContainer *jconRec, AliEmcalJet *jGen, AliJetContainer *jconGen)
THnSparse * fhZNAVzeroATrackTT[kCAll][kTT]
ZNA energy versus Vzero A mult versus track mult.
TH1D * fhTrackMultiplicity[kCAll]
ZDC A neutral energy.
AliParticleContainer * GetParticleContainer(Int_t i=0) const
TH2F * fhDphiTriggerJet[kCAll][kTT][kRho]
gc vertexZ accepted after vtx cut in MC
TH1F * fhRhoTT[kCAll][kTT][kRho-1]
TT associated spectrum of jets.
TH1F * fhCentrality[kCAll]
Dphi of accepted jets after dphi cut.
Bool_t IsMCEventInAcceptance(AliVEvent *event)
AliParticleContainer * GetParticleContainer() const
TH2F * fhJetEtaGen[kCAll]
jet eta vs jet pT
TH1F * fhTrackPtGen[kCAll]
gc X=centrality; Y= track pT
THnSparse * fhZNAVzeroATrack[kCAll]
multiplicity of tracks in event with TT track
TH1D * fh1Ntriggers[kCAll][kTT]
gc event statistics
TH1D * fhJetPtGen[kCAll][kRho]
impact parameter distribution hijing versus TT
Double_t fSignalJetEtaWindow
TH1F * fhCentralityV0A
centrality V0 multiplicity A+C
void Terminate(Option_t *)
TH1D * fhDeltaPt[kCAll][kTT][kRho-1]
jet area times rho from perp cone
Bool_t IsTrackInAcceptance(AliVParticle *track, Bool_t isGen=0)
TH1F * fhZNAEnergy[kCAll]
V0A multiplicity.
TH2D * fHJetSpecGen[kCAll][kTT][kRho]
TT associated spectrum of jets.
AliAnalysisTaskHJetSpectra()
Double_t EstimateBgKT(AliJetContainer *jetCont, AliParticleContainer *trkArray, AliVParticle *trackTT)
TH1F * fhVertexZAcceptMC
gc vertexZ inclusive in MC
TH2D * fhDeltaPtEmb2D[kCAll][kTT][kRho-1]
embedded delta pT
AliAnalysisUtils * fHelperClass
A random number.
TH1F * fhRhoIncl[kCAll][kRho-1]
gc X=rho from perp cone, Y=centrality
Double_t GetConePt(Double_t eta, Double_t phi, Double_t radius, AliParticleContainer *trkArray, Bool_t isGen)
TH1D * fhTrackMultiplicityTT[kCAll][kTT]
multiplicity of tracks
TH2D * fhJetPtGenVsJetPtRec[kCAll][kRho]
TH1D * fhDeltaPtEmb[kCAll][kTT][kRho-1]
delta pT
TH2F * fhDphiTriggerJetGen[kCAll][kTT][kRho]
gc Delta phi versus jet pT
TH1D * fhDeltaPtEmbBc2Bc[kCAll][kTT][kRho-1]
embedded delta pT versus pT of the embedded jet (emb track is perp to TT)
AliEmcalJet * GetNextAcceptJet()
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Double_t RelativePhi(Double_t mphi, Double_t vphi)
Double_t fSignalJetRadius
TH1F * fhZNAEnergyTT[kCAll][kTT]
ZDC A neutral energy for given V0A centrality selection.
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
TH1F * fhDphiTriggerJetAccept
gc Delta phi versus jet pT
TH1F * fARhoTT[kCAll][kTT][kRho-1]
gc X=rho from perp cone, Y=centrality
TH2D * fHJetSpec[kCAll][kTT][kRho]
trigger multiplicity in event
TH2D * fhDeltaPtEmbBc2Bc2D[kCAll][kTT][kRho-1]
embedded delta pT (emb track is back-to-back in azimuth to TT)
Double_t fImpParam
gc value is filled, if pythia header is accessible
AliEmcalList * fOutput
!output list
Short_t TrackAt(Int_t idx) const
Double_t GetSimPrimaryVertex()
TH2F * fhTrackEta[kCAll]
jet eta vs jet pT
void GetDeltaPt(Int_t nrho, TArrayD &rho, Double_t *dpt, Double_t ttPhi, Double_t ttEta, AliParticleContainer *trkArray, Bool_t isGen)
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
void UserCreateOutputObjects()
TH2D * fhDeltaPtEmbPerp2D[kCAll][kTT][kRho-1]
embedded delta pT (emb track is perp to TT)
TH1F * fhVzeroATotMult[kCAll]
centrality from ZNA
TH1F * fhVertexZMC
gc vertexZ accepted after vtx cut
AliVParticle * fTrigTracks[kTT][999]
TH1D * fhImpactParameter[kCAll]
ZNA energy versus Vzero mult. versus track mult. in events with TT.
Bool_t RetrieveEventObjects()
TH1F * fhCentralityZNA
centrality from V0C
Bool_t fInitializedLocal
gc Vertex selection helper
TH2D * fhPtTrkTruePrimRec[kCAll]
Container for jet within the EMCAL jet framework.
TH1D * fhImpactParameterTT[kCAll][kTT]
impact parameter distribution hijing
TH1F * fhCentralityV0M
centrality V0 multiplicity A+C when TT is present