1 #ifndef ALIANALYSISTASKSE_H
10 #include <TProfile2D.h>
19 #include <THnSparse.h>
22 #include <TClonesArray.h>
26 #include <TInterpreter.h>
27 #include "AliAnalysisTask.h"
28 #include "AliCentrality.h"
30 #include "AliESDEvent.h"
31 #include "AliESDInputHandler.h"
32 #include "AliAODEvent.h"
33 #include "AliAODHandler.h"
34 #include "AliAnalysisManager.h"
35 #include "AliAnalysisTaskSE.h"
38 #include "AliInputEventHandler.h"
43 #include "AliGenEventHeader.h"
44 #include "AliGenPythiaEventHeader.h"
45 #include "AliGenHijingEventHeader.h"
46 #include "AliAODMCHeader.h"
47 #include "AliMCEvent.h"
51 #include "AliVEventHandler.h"
52 #include "AliVParticle.h"
53 #include "AliAODMCParticle.h"
54 #include "AliAnalysisUtils.h"
57 #include "AliVVertex.h"
58 #include "AliExternalTrackParam.h"
63 #include "AliGenDPMjetEventHeader.h"
68 #include "AliHeader.h"
69 #include "AliRunLoader.h"
70 #include "AliVVZERO.h"
71 #include "AliAODZDC.h"
85 fUseDefaultVertexCut(1), fUsePileUpCut(1),
86 fRhoTaskName(), fRhoTaskNameMC(),
87 fSignalJetRadius(0.4), fSignalJetRadiusSquared(fSignalJetRadius*fSignalJetRadius),
88 fSignalJetEtaWindow(0.9 - fSignalJetRadius), fTrackEtaWindow(0.9), fMinTrackPt(0.150), fMinJetArea(0.0),
89 fCentralityType("V0A"), fMinFractionShared(0.5),
90 fCrossSection(0.0), fTrials(0.0), fImpParam(-1.0), fRandom(0), fHelperClass(0), fInitializedLocal(0),
91 fDphiCut(TMath::Pi()-0.6), fUseDoubleBinPrecision(0),
92 fHistEvtSelection(0x0),fhKTAreaPt(0x0),
93 fhVertexZ(0x0), fhVertexXAccept(0x0), fhVertexYAccept(0x0), fhVertexZAccept(0x0),
94 fhVertexXAcceptTT(0x0), fhVertexYAcceptTT(0x0), fhVertexZAcceptTT(0x0),
95 fhVertexZMC(0x0), fhVertexZAcceptMC(0x0),
96 fhDphiTriggerJetAccept(0x0), fhJetPhiIncl(0x0), fhJetEtaIncl(0x0),
97 fhCentralityV0M(0x0), fhCentralityV0A(0x0), fhCentralityV0C(0x0), fhCentralityZNA(0x0),
98 fhDiffPtVsPtTrackTrue(0x0),
99 fhTrackPhiCG(0x0), fhTrackPhiTPCG(0x0),
102 fhDCAinXVsPtStrange(0x0),
103 fhDCAinYVsPtStrange(0x0),
104 fhDCAinXVsPtNonStrange(0x0),
105 fhDCAinYVsPtNonStrange(0x0),
106 fCentralityBins(kCAll),
110 fZVertexCut(10.0),fCutPhi(0.6),
114 for(
Int_t it=0; it<kTT;it++){
115 fRhoRec[it].Set(kRho);
116 fRhoMC[it].Set(kRho);
119 fhCentralityTT[it] = NULL;
122 for(
Int_t iw=0; iw<21; iw++){
123 fhPtJetPrimVsPtJetRec[iw] = NULL;
126 for(
Int_t ic =0; ic<kCAll; ic++){
127 for(
Int_t it=0; it<kTT;it++){
128 fh1Ntriggers[ic][it]=NULL;
129 fh1TriggerMult[ic][it]=NULL;
130 fh1NtriggersGen[ic][it]=NULL;
131 fh1TriggerMultGen[ic][it]=NULL;
134 fhImpactParameterTT[ic][it]=NULL;
136 for(
Int_t ir=0; ir<kRho; ir++){
137 fhDphiTriggerJet[ic][it][ir]=NULL;
138 fhDphiTriggerJetGen[ic][it][ir]=NULL;
139 fHJetSpec[ic][it][ir]=NULL;
140 fHJetSpecGen[ic][it][ir]=NULL;
142 fhDeltaPt[ic][it][ir]=NULL;
143 fhDeltaPtEmb[ic][it][ir]=NULL;
144 fhDeltaPtEmb2D[ic][it][ir]=NULL;
145 fhDeltaPtEmbPerp[ic][it][ir]=NULL;
146 fhDeltaPtEmbPerp2D[ic][it][ir]=NULL;
147 fhDeltaPtEmbBc2Bc[ic][it][ir]=NULL;
148 fhDeltaPtEmbBc2Bc2D[ic][it][ir]=NULL;
150 fhRhoTT[ic][it][ir]=NULL;
151 fARhoTT[ic][it][ir]=NULL;
154 fhVzeroATotMultTT[ic][it]=NULL;
155 fhZNAEnergyTT[ic][it]=NULL;
156 fhTrackMultiplicityTT[ic][it]=NULL;
157 fhZNAVzeroATrackTT[ic][it]=NULL;
160 fhJetPhiGen[ic]=NULL;
163 fhJetEtaGen[ic]=NULL;
166 fhTrackPtGen[ic]=NULL;
167 fhCentrality[ic]=NULL;
168 fhVzeroATotMult[ic]=NULL;
169 fhZNAEnergy[ic]=NULL;
170 fhTrackMultiplicity[ic]=NULL;
171 fhZNAVzeroATrack[ic]=NULL;
172 fhImpactParameter[ic]=NULL;
174 for(
Int_t ir=0; ir<kRho; ir++){
175 fhJetPtGen[ic][ir]=NULL;
176 fhJetPtGenVsJetPtRec[ic][ir]=NULL;
177 fhJetPtResolutionVsPtGen[ic][ir]=NULL;
181 for(
Int_t ir=0; ir<kRho-1; ir++){
182 fhRhoIncl[ic][ir]=NULL;
183 fhDeltaPtIncl[ic][ir]=NULL;
186 fhPtTrkTruePrimRec[ic]=NULL;
187 fhPtTrkTruePrimGen[ic]=NULL;
188 fhPtTrkSecOrFakeRec[ic]=NULL;
191 fCentralityBins[0]=0.;
192 fCentralityBins[1]=20.;
193 fCentralityBins[2]=50.;
194 fCentralityBins[3]=100.;
195 fCentralityBins[4]=1e6;
209 for(
Int_t i=0; i<999; i++){
212 for(
Int_t it=0; it<kTT; it++){
213 fTrigTracksGen[it][i]=0x0;
214 fTrigTracks[it][i]=0x0;
224 for(
Int_t i=0; i<2; i++){
225 fhInvPtQVsPhi[i] = NULL;
226 fhInvPtQVsEta[i] = NULL;
227 fhInvPtQVsPhiASide[i] = NULL;
228 fhInvPtQVsPhiCSide[i] = NULL;
229 fhSigmaPtOverPtVsPt[i] = NULL;
237 fUseDefaultVertexCut(1), fUsePileUpCut(1),
238 fRhoTaskName(), fRhoTaskNameMC(),
239 fSignalJetRadius(0.4), fSignalJetRadiusSquared(fSignalJetRadius*fSignalJetRadius),
240 fSignalJetEtaWindow(0.9 - fSignalJetRadius), fTrackEtaWindow(0.9), fMinTrackPt(0.150), fMinJetArea(0.0),
241 fCentralityType(
"V0A"), fMinFractionShared(0.5),
242 fCrossSection(0.0), fTrials(0.0), fImpParam(-1.0), fRandom(0), fHelperClass(0), fInitializedLocal(0),
243 fDphiCut(TMath::Pi()-0.6), fUseDoubleBinPrecision(0),
244 fHistEvtSelection(0x0), fhKTAreaPt(0x0),
245 fhVertexZ(0x0), fhVertexXAccept(0x0), fhVertexYAccept(0x0), fhVertexZAccept(0x0),
246 fhVertexXAcceptTT(0x0), fhVertexYAcceptTT(0x0), fhVertexZAcceptTT(0x0),
247 fhVertexZMC(0x0), fhVertexZAcceptMC(0x0),
248 fhDphiTriggerJetAccept(0x0), fhJetPhiIncl(0x0), fhJetEtaIncl(0x0),
249 fhCentralityV0M(0x0), fhCentralityV0A(0x0), fhCentralityV0C(0x0), fhCentralityZNA(0x0),
251 fhDiffPtVsPtTrackTrue(0x0),
252 fhTrackPhiCG(0x0), fhTrackPhiTPCG(0x0),
255 fhDCAinXVsPtStrange(0x0),
256 fhDCAinYVsPtStrange(0x0),
257 fhDCAinXVsPtNonStrange(0x0),
258 fhDCAinYVsPtNonStrange(0x0),
259 fCentralityBins(kCAll),
263 fZVertexCut(10.0),fCutPhi(0.6),
274 for(
Int_t iw=0; iw<21; iw++){
332 for(
Int_t ir=0; ir<kRho-1; ir++){
362 for(
Int_t i=0; i<999; i++){
375 for(
Int_t i=0; i<2; i++){
384 fTrackPtRef->SetParameters(1.46886e+08,8.37087e-01);
387 fTrackPtSig =
new TF1(
"fTrackPtSig",
"([0]*exp(-x*[1])+[2]*exp(-x*[3])+[4]*exp(-x*[5]))*([6]+x*[7]+x*x*[8])",
fTTlow[
kSig],
fTThigh[kSig]);
388 fTrackPtSig->SetParameters(1.85619e+07,6.08943e-01,3.10336e+05,2.71288e-01,2.28454e+03,1.01523e-01, 8.43568e-01, 6.64789e-03, 2.13813e-04);
390 DefineOutput(1, TList::Class());
405 if(!recTrkCont)
return 0.0;
407 AliVParticle* tmpTrack=NULL;
410 recTrkCont->ResetCurrentID();
412 if(!tmpTrack)
continue;
414 if(
GetDeltaR(tmpTrack->Phi(), phi, tmpTrack->Eta(), eta) < radius){
415 tmpConePt = tmpConePt + tmpTrack->Pt();
426 AliGenHijingEventHeader* hijingHeader =
dynamic_cast<AliGenHijingEventHeader*
>(MCEvent()->GenEventHeader());
430 AliAODMCHeader* aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
433 for(
UInt_t i = 0;i<aodMCH->GetNCocktailHeaders();i++){
434 hijingHeader =
dynamic_cast<AliGenHijingEventHeader*
>(aodMCH->GetCocktailHeader(i));
435 if(hijingHeader)
break;
441 return (
Double_t) (hijingHeader->ImpactParameter());
443 AliWarning(Form(
"In task %s: GetImpactParameter() failed!", GetName()));
450 AliGenEventHeader* mcHeader = NULL;
451 AliAODMCHeader* aodMCH = NULL;
454 AliRunLoader *rl = AliRunLoader::Instance();
455 if(rl) mcHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(rl->GetHeader()->GenEventHeader());
461 mcHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(MCEvent()->GenEventHeader());
464 aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
467 for(
UInt_t i = 0; i<aodMCH->GetNCocktailHeaders(); i++){
468 mcHeader =
dynamic_cast<AliGenPythiaEventHeader*
>(aodMCH->GetCocktailHeader(i));
474 mcHeader =
dynamic_cast<AliGenHijingEventHeader*
>(MCEvent()->GenEventHeader());
477 aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
480 for(
UInt_t i = 0; i<aodMCH->GetNCocktailHeaders(); i++){
481 mcHeader =
dynamic_cast<AliGenHijingEventHeader*
>(aodMCH->GetCocktailHeader(i));
487 mcHeader =
dynamic_cast<AliGenDPMjetEventHeader*
>(MCEvent()->GenEventHeader());
490 aodMCH =
dynamic_cast<AliAODMCHeader*
>(InputEvent()->FindListObject(AliAODMCHeader::StdBranchName()));
493 for(
UInt_t i = 0; i<aodMCH->GetNCocktailHeaders(); i++){
494 mcHeader =
dynamic_cast<AliGenDPMjetEventHeader*
>(aodMCH->GetCocktailHeader(i));
506 mcHeader->PrimaryVertex(
fpyVtx);
509 AliWarning(Form(
"In task %s: Pythia Vertex failed!", GetName()));
517 if(!event)
return kFALSE;
541 if(!event)
return kFALSE;
554 fhVertexZ->Fill(event->GetPrimaryVertex()->GetZ());
562 if(TMath::Abs(event->GetPrimaryVertex()->GetZ()) >
fZVertexCut){
566 if(event->GetPrimaryVertex()->GetNContributors()<1){
576 fVtxArray[0]=
event->GetPrimaryVertex()->GetX();
577 fVtxArray[1]=
event->GetPrimaryVertex()->GetY();
578 fVtxArray[2]=
event->GetPrimaryVertex()->GetZ();
587 if(!track)
return kFALSE;
591 if(!track->Charge())
return kFALSE;
593 if(!(static_cast<AliAODMCParticle*>(track))->IsPhysicalPrimary())
return kFALSE;
608 if(!jet)
return kFALSE;
644 for(
Int_t ir=0;ir<nrho;ir++){
656 tmpRandConePhi =
fRandom->Rndm()*TMath::TwoPi();
706 for(
Int_t ir=0; ir < nrho; ir++){
720 AliError(
"??? Event pointer == 0 ???");
749 Double_t centralityPercentile = -1.0;
750 Double_t centralityPercentileV0A = -1.0;
751 Double_t centralityPercentileV0C = -1.0;
752 Double_t centralityPercentileV0M = -1.0;
753 Double_t centralityPercentileZNA = -1.0;
759 if(InputEvent()->GetVZEROData()){
760 multVzero = InputEvent()->GetVZEROData()->GetMTotV0A();
770 AliVZDC *aodZDC =
dynamic_cast<AliVZDC*
> (InputEvent()->GetZDCData());
772 const Double_t *ZNAtower = aodZDC->GetZNATowerEnergy();
773 energyZdcNA = ZNAtower[0]*4.*82./208./12.96;
777 AliCentrality* tmpCentrality = InputEvent()->GetCentrality();
782 centralityPercentile = tmpCentrality->GetCentralityPercentile(
fCentralityType.Data());
783 centralityPercentileV0A = tmpCentrality->GetCentralityPercentile(
"V0A");
784 centralityPercentileV0C = tmpCentrality->GetCentralityPercentile(
"V0C");
785 centralityPercentileV0M = tmpCentrality->GetCentralityPercentile(
"V0M");
786 centralityPercentileZNA = tmpCentrality->GetCentralityPercentile(
"ZNA");
790 AliWarning(Form(
"Centrality value not valid (c=%E)",centralityPercentile));
804 for(
Int_t ic=0; ic<2; ic++){
805 if(
ficb[ic]==-1)
continue;
816 for(
Int_t ic=0; ic<2; ic++){
817 if(
ficb[ic]==-1)
continue;
832 TClonesArray* arrayMC = 0;
834 Int_t iNTracksMC = 0;
838 AliError(
"No input AOD found!");
841 arrayMC = (TClonesArray*) aodIn->FindListObject(AliAODMCParticle::StdBranchName());
843 AliError(
"No MC array found!");
847 iNTracksMC = arrayMC->GetEntriesFast();
864 AliVParticle *constTrackRec = NULL;
865 AliVParticle *constTrackGen = NULL;
902 Int_t indexSingleRndTrigGen[
kTT] = {-1,-1};
903 AliVParticle* trackTTGen[
kTT] = {NULL,NULL};
906 Double_t sumFakeTrackPtInJetNotStrange = 0.;
907 Double_t sumFakeTrackPtInJetStrange = 0.;
908 Double_t sumStrangeTrackPtInJet = 0.;
909 AliAODMCParticle* particleMC = NULL;
910 AliAODMCParticle* particleMCMother = NULL;
911 Int_t iIndexMother = 0;
913 Int_t iPdgCodeMother = 0;
916 Double_t newJetPt=0., newSumFakePt=0., enhw =0.;
918 Double_t normprob, prob, probTT, dphiTTTT;
924 parContGen->ResetCurrentID();
926 if(!constTrackGen)
continue;
929 for(
Int_t ic=0; ic<2; ic++){
930 if(
ficb[ic]==-1)
continue;
935 if((
fTTlow[it] <= constTrackGen->Pt()) && (constTrackGen->Pt() <
fTThigh[it])){
936 if(ntriggersGen[it]<999){
948 for(
Int_t ic=0; ic<2; ic++){
949 if(
ficb[ic]==-1)
continue;
953 if(ntriggersGen[it]==1){
954 indexSingleRndTrigGen[it] = 0;
955 trackTTGen[it] = (AliVParticle*) (
fTrigTracksGen[it][indexSingleRndTrigGen[it]]);
957 }
else if(ntriggersGen[it]>1){
960 for(
Int_t ik=0; ik<ntriggersGen[it]; ik++){
961 normprob += tmpFunc->Eval(((AliVParticle*) (
fTrigTracksGen[it][ik]))->Pt());
966 for(
Int_t ik=0; ik<ntriggersGen[it]; ik++){
967 probTT += tmpFunc->Eval(((AliVParticle*) (
fTrigTracksGen[it][ik]))->Pt())/normprob;
969 indexSingleRndTrigGen[it] = ik;
974 indexSingleRndTrigGen[it] = 0;
976 trackTTGen[it] = (AliVParticle*) (
fTrigTracksGen[it][indexSingleRndTrigGen[it]]);
985 Int_t indexSingleRndTrig[
kTT] = {-1,-1};
986 AliVParticle* trackTT[
kTT] = {NULL,NULL};
992 trkContRec->ResetCurrentID();
994 if(!constTrackRec)
continue;
999 if(TMath::Abs(constTrackRec->GetLabel()) == 99999)
continue;
1005 for(
Int_t ic=0; ic<2; ic++){
1006 if(
ficb[ic]==-1)
continue;
1008 fhTrackEta[
ficb[ic]]->Fill(constTrackRec->Pt(), constTrackRec->Eta());
1013 if(
fTTlow[it] <= constTrackRec->Pt() && constTrackRec->Pt() <
fTThigh[it]){
1014 if(ntriggers[it]<999){
1026 for(
Int_t ic=0; ic<2; ic++){
1027 if(
ficb[ic]==-1)
continue;
1036 if(ntriggers[it]==1){
1037 indexSingleRndTrig[it] = 0;
1038 trackTT[it] = (AliVParticle*) (
fTrigTracks[it][indexSingleRndTrig[it]]);
1040 }
else if(ntriggers[it]>1){
1043 for(
Int_t ik=0; ik<ntriggers[it]; ik++){
1044 normprob += tmpFunc->Eval(((AliVParticle*) (
fTrigTracks[it][ik]))->Pt());
1049 if(dphiTTTT<-0.5*TMath::Pi()) dphiTTTT += TMath::TwoPi();
1050 if(dphiTTTT> 1.5*TMath::Pi()) dphiTTTT -= TMath::TwoPi();
1058 for(
Int_t ik=0; ik<ntriggers[it]; ik++){
1059 probTT += tmpFunc->Eval(((AliVParticle*) (
fTrigTracks[it][ik]))->Pt())/normprob;
1061 indexSingleRndTrig[it] = ik;
1066 indexSingleRndTrig[it] = 0;
1068 trackTT[it] = (AliVParticle*) (
fTrigTracks[it][indexSingleRndTrig[it]]);
1072 if(ntriggers[
kRef]>0 || ntriggers[
kSig]>0){
1120 Bool_t bRecPrim = kFALSE;
1126 parContGen->ResetCurrentID();
1128 if(!constTrackGen)
continue;
1131 for(
Int_t ic=0; ic<2; ic++){
1132 if(
ficb[ic]==-1)
continue;
1140 if(trkContRec && parContGen){
1141 trkContRec->ResetCurrentID();
1143 if(!constTrackRec)
continue;
1147 parContGen->ResetCurrentID();
1149 if(!constTrackGen)
continue;
1151 if(TMath::Abs(constTrackRec->GetLabel()) == TMath::Abs(constTrackGen->GetLabel())){
1155 for(
Int_t ic=0; ic<2; ic++){
1156 if(
ficb[ic]==-1)
continue;
1165 for(
Int_t ic=0; ic<2; ic++){
1166 if(
ficb[ic]==-1)
continue;
1182 jetContGen->ResetCurrentID();
1184 if(!jetGen)
continue;
1192 for(
Int_t ic=0; ic<2; ic++){
1193 if(
ficb[ic]==-1)
continue;
1203 jetContRec->ResetCurrentID();
1205 if(!jetRec)
continue;
1210 sumFakeTrackPtInJetNotStrange = 0.;
1211 sumFakeTrackPtInJetStrange = 0.;
1212 sumStrangeTrackPtInJet = 0.;
1214 particleMCMother = NULL;
1221 constTrackRec =
static_cast<AliVParticle*
> (jetRec->
TrackAt(iq,trkContRec->GetArray()));
1222 if(!constTrackRec)
continue;
1225 parContGen->ResetCurrentID();
1227 if(!constTrackGen)
continue;
1229 if(TMath::Abs(constTrackRec->GetLabel()) == TMath::Abs(constTrackGen->GetLabel())){
1236 lab = TMath::Abs(constTrackRec->GetLabel());
1239 if(lab < iNTracksMC){
1240 particleMC = (AliAODMCParticle*) arrayMC->At(lab);
1242 iPdgCode = TMath::Abs(particleMC->GetPdgCode());
1243 iIndexMother = TMath::Abs(particleMC->GetMother());
1245 sumFakeTrackPtInJetStrange += constTrackRec->Pt();
1246 sumStrangeTrackPtInJet += constTrackRec->Pt();
1250 if(iIndexMother < iNTracksMC && 0 <= iIndexMother && !bStrange){
1252 particleMCMother = (AliAODMCParticle*) arrayMC->At(iIndexMother);
1253 if(particleMCMother){
1254 iPdgCodeMother = TMath::Abs(particleMCMother->GetPdgCode());
1257 sumFakeTrackPtInJetStrange += constTrackRec->Pt();
1258 sumStrangeTrackPtInJet += constTrackRec->Pt();
1266 sumFakeTrackPtInJetNotStrange += constTrackRec->Pt();
1270 lab = TMath::Abs(constTrackRec->GetLabel());
1271 if(lab < iNTracksMC){
1272 particleMC = (AliAODMCParticle*) arrayMC->At(lab);
1274 iPdgCode = TMath::Abs(particleMC->GetPdgCode());
1276 sumStrangeTrackPtInJet += constTrackRec->Pt();
1283 for(
Int_t iw=0; iw<21; iw++){
1285 newJetPt = jetRec->
Pt() + enhw*sumStrangeTrackPtInJet;
1286 newSumFakePt = sumFakeTrackPtInJetNotStrange + (1.0+ enhw)*sumFakeTrackPtInJetStrange;
1301 if(jetGen->
Pt()<1e-3){
1321 for(
Int_t ic=0; ic<2; ic++){
1322 if(
ficb[ic]==-1)
continue;
1345 Bool_t bFirstCycle = kTRUE;
1353 if(parContGen && ntriggersGen[it] >0 && ((AliVParticle*)trackTTGen[it])){
1354 bFirstCycle = kTRUE;
1356 AliVParticle* triggerHadronGen = (AliVParticle*) trackTTGen[it];
1357 if(!triggerHadronGen)
continue;
1359 for(
Int_t ic=0; ic<2; ic++){
1360 if(
ficb[ic]==-1)
continue;
1370 jetContGen->ResetCurrentID();
1373 AliError(Form(
"%s: Could not receive gen jet", GetName()));
1378 areaJet = jetGen->
Area();
1379 pTJet = jetGen->
Pt();
1381 if(bFirstCycle && it==
kRef){
1382 for(
Int_t ic=0; ic<2; ic++){
1383 if(
ficb[ic]==-1)
continue;
1393 if(dfi < -0.5*TMath::Pi()) dfi += TMath::TwoPi();
1394 if(dfi > 1.5*TMath::Pi()) dfi -= TMath::TwoPi();
1397 for(
Int_t ic=0; ic<2; ic++){
1398 if(
ficb[ic]==-1)
continue;
1404 if(TMath::Abs(dphi) <
fDphiCut)
continue;
1410 for(
Int_t ic=0; ic<2; ic++){
1411 if(
ficb[ic]==-1)
continue;
1416 bFirstCycle = kFALSE;
1439 Bool_t bEmbJetCloseToTT = kFALSE;
1442 jetContRec->ResetCurrentID();
1444 if(!jetRec)
continue;
1448 bEmbJetCloseToTT = kFALSE;
1450 if(jetRec->
Pt() > trackTT[it]->Pt()*0.5){
1453 constTrackRec =
static_cast<AliVParticle*
> (jetRec->
TrackAt(iq,trkContRec->GetArray()));
1454 if(!constTrackRec)
continue;
1455 if(constTrackRec != ((AliVParticle*) trackTT[it]))
continue;
1457 bEmbJetCloseToTT = kTRUE;
1462 if(bEmbJetCloseToTT)
continue;
1470 if(jetEmb->
Pt()<1e-3){
1483 for(
Int_t ic=0; ic<2; ic++){
1484 if(
ficb[ic]==-1)
continue;
1495 dphi = TMath::Abs(
RelativePhi(trackTT[it]->Phi(), jetEmb->
Phi()));
1496 if(TMath::Pi()/4 < dphi && dphi < 3*TMath::Pi()/4){
1505 }
else if(dphi >= 3*TMath::Pi()/4 ){
1527 for(
Int_t ic=0; ic<2; ic++){
1528 if(
ficb[ic]==-1)
continue;
1534 if(ntriggers[it]>0){
1536 for(
Int_t ir=0; ir < kRho-1; ir++){
1539 for(
Int_t ic=0; ic<2; ic++){
1540 if(
ficb[ic]==-1)
continue;
1553 Double_t deltapt[kRho-1], phiTT = 0., etaTT = -1000.;
1556 Bool_t bRecJetCloseToTT = kFALSE;
1560 bRecJetCloseToTT = kFALSE;
1565 phiTT = trackTT[it]->Phi();
1566 etaTT = trackTT[it]->Eta();
1569 jetContRec->ResetCurrentID();
1571 if(!jetRec)
continue;
1575 bRecJetCloseToTT = kFALSE;
1577 if(jetRec->
Pt() > trackTT[it]->Pt()*0.5){
1579 constTrackRec = (AliVParticle*) (jetRec->
TrackAt(iq,trkContRec->GetArray()));
1580 if(!constTrackRec)
continue;
1581 if(constTrackRec != ((AliVParticle*) trackTT[it]))
continue;
1582 phiTT = jetRec->
Phi();
1583 etaTT = jetRec->
Eta();
1584 bRecJetCloseToTT = kTRUE;
1588 if(bRecJetCloseToTT)
break;
1596 GetDeltaPt(kRho-1, (
fRhoRec[it]), &deltapt[0], phiTT, etaTT, trkContRec, kFALSE);
1599 for(
Int_t ir=0; ir < kRho-1; ir++){
1600 for(
Int_t ic=0; ic<2; ic++){
1601 if(
ficb[ic]==-1)
continue;
1605 if(ntriggers[it]>0){
1619 AliAODTrack *atrk=NULL;
1624 trkContRec->ResetCurrentID();
1631 if(dphi < 0) dphi+= 2*TMath::Pi();
1632 if(dphi > 2*TMath::Pi()) dphi-= 2*TMath::Pi();
1634 if(atrk->IsGlobalConstrained()){
1640 itrkq = (atrk->Charge()<0) ? 0 : 1;
1653 memset(cv, 0,
sizeof(
Double_t) * 21);
1654 memset(pxpypz, 0,
sizeof(
Double_t) * 50);
1655 memset(xyz, 0,
sizeof(
Double_t) * 50);
1657 atrk->GetPxPyPz(pxpypz);
1658 atrk->GetCovarianceXYZPxPyPz(cv);
1660 AliExternalTrackParam par(xyz, pxpypz, cv, atrk->Charge());
1661 fhSigmaPtOverPtVsPt[itrkq]->Fill(atrk->Pt(), TMath::Abs(sqrt(par.GetSigma1Pt2())/par.GetSigned1Pt()));
1668 lab = TMath::Abs(atrk->GetLabel());
1670 if(lab < iNTracksMC){
1671 particleMC = (AliAODMCParticle*) arrayMC->At(lab);
1673 if(particleMC->IsPhysicalPrimary()){
1685 for(
Int_t ic=0; ic<2; ic++){
1686 if(
ficb[ic]==-1)
continue;
1715 jetContRec->ResetCurrentID();
1718 AliError(Form(
"%s: Could not receive jet", GetName()));
1723 pTJet = jetRec->
Pt();
1733 if(ntriggers[it]>0 && ((AliVParticle*) trackTT[it])){
1738 AliVParticle* triggerHadron = (AliVParticle*) trackTT[it];
1739 if(!triggerHadron)
continue;
1741 for(
Int_t ic=0; ic<2; ic++){
1742 if(
ficb[ic]==-1)
continue;
1749 jetContRec->ResetCurrentID();
1752 AliError(Form(
"%s: Could not receive jet", GetName()));
1757 areaJet = jetRec->
Area();
1758 pTJet = jetRec->
Pt();
1760 if(bFirstCycle && it==
kRef){
1761 for(
Int_t ic=0; ic<2; ic++){
1762 if(
ficb[ic]==-1)
continue;
1771 if(dfi < -0.5*TMath::Pi()) dfi += TMath::TwoPi();
1772 if(dfi > 1.5*TMath::Pi()) dfi -= TMath::TwoPi();
1774 for(
Int_t ic=0; ic<2; ic++){
1775 if(
ficb[ic]==-1)
continue;
1783 if(TMath::Abs(dphi) <
fDphiCut)
continue;
1791 for(
Int_t ic=0; ic<2; ic++){
1792 if(
ficb[ic]==-1)
continue;
1803 bFirstCycle = kFALSE;
1841 printf(
"ERROR: Output list not available\n");
1850 if(
fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
1867 TString bgtype[]={
"Perp",
"CMS",
"KT",
"Zero"};
1871 Bool_t oldStatus = TH1::AddDirectoryStatus();
1872 TH1::AddDirectory(kFALSE);
1894 for(
Int_t ic =0; ic<icmax; ic++){
1895 name = (ic==0) ? Form(
"fh1NtriggersMB") :
1897 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1901 name = (ic==0) ? Form(
"fh1TriggerMultMB") :
1903 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
1914 const Int_t dimSpec = 2;
1915 const Int_t nBinsSpec[dimSpec] = { 50, bw*160};
1916 const Double_t lowBinSpec[dimSpec] = { 0.0, -20.0};
1917 const Double_t hiBinSpec[dimSpec] = { 2.0, 300.0};
1919 for(
Int_t ic =0; ic<icmax; ic++){
1922 name = (ic==0) ?
"fHJetSpecMB" :
1925 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1929 Form(
"Recoil jet spectrum TT%d%d [A,pTjet-A*rho%s]",
1931 nBinsSpec[0], lowBinSpec[0], hiBinSpec[0], nBinsSpec[1], lowBinSpec[1],hiBinSpec[1]);
1939 for(
Int_t ic =0; ic<icmax; ic++){
1942 name = (ic==0) ?
"fhRhoMB" :
1946 name.Append(Form(
"TT%d%d%s",TMath::Nint(
fTTlow[it]),TMath::Nint(
fTThigh[it]),bgtype[ir].
Data()));
1949 fhRhoTT[ic][it][ir] =
new TH1F(name.Data(),
1950 Form(
"Rho%s",bgtype[ir].
Data()),80, 0.0, 40.0);
1955 name = (ic==0) ?
"fARhoMB" :
1959 name.Append(Form(
"TT%d%d%s",TMath::Nint(
fTTlow[it]),TMath::Nint(
fTThigh[it]),bgtype[ir].
Data()));
1960 fARhoTT[ic][it][ir] =
new TH1F(name.Data(),
1961 Form(
"Area times rho %s",bgtype[ir].
Data()),80, 0.0, 40.0);
1965 name = (ic==0) ? Form(
"fhRhoInclMB%s",bgtype[ir].
Data()) :
1976 for(
Int_t ic =0; ic<icmax; ic++){
1979 name = (ic==0) ?
"fhDeltaPtMB" :
1983 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
1985 Form(
"DeltaPt%s",bgtype[ir].
Data()), 150, -50, 100);
1990 name = (ic==0) ?
"fhDeltaPtInclMB" :
1994 name.Append(Form(
"%s", bgtype[ir].
Data()));
2002 name = (ic==0) ?
"fhDeltaPtEmbMB" :
2006 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2011 name = (ic==0) ?
"fhDeltaPtEmbPerpMB" :
2015 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2020 name = (ic==0) ?
"fhDeltaPtEmbBc2BcMB" :
2024 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2029 name = (ic==0) ?
"fhDeltaPtEmb2DMB" :
2033 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2035 Form(
"fhDeltaPtEmb2D%s",bgtype[ir].
Data()), 125,0, 250, 150, -50, 100);
2040 name = (ic==0) ?
"fhDeltaPtEmbPerp2DMB" :
2044 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2050 name = (ic==0) ?
"fhDeltaPtEmbBc2Bc2DMB" :
2054 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2065 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.};
2068 fhKTAreaPt =
new TH2F(
"fhKTAreaPt",
"KT jet Area vs Pt",nbinsPt, binsPt, 50,0,2);
2073 for(
Int_t ic =0; ic<icmax; ic++){
2074 name = (ic==0) ? Form(
"fhJetPhiMB") :
2078 fhJetPhi[ic] =
new TH2F(name.Data(),
"Azim dist jets vs pTjet", 50, 0, 100, 50,-TMath::Pi(),TMath::Pi());
2082 name = (ic==0) ? Form(
"fhTrackPhiMB") :
2086 fhTrackPhi[ic] =
new TH2F(name.Data(),
"azim dist trig had vs pT,trk", 50, 0, 50, 50,-TMath::Pi(),TMath::Pi());
2089 name = (ic==0) ? Form(
"fhJetEtaMB") :
2093 fhJetEta[ic] =
new TH2F(name.Data(),
"Eta dist jets vs pTjet", 50,0, 100, 40,-0.9,0.9);
2096 name = (ic==0) ? Form(
"fhTrackEtaMB") :
2100 fhTrackEta[ic] =
new TH2F(name.Data(),
"Eta dist trig had vs pT,trk", 50, 0, 50, 40,-0.9,0.9);
2103 name = (ic==0) ? Form(
"fhTrackPtMB") :
2107 fhTrackPt[ic] =
new TH1F(name.Data(),
"pT,trk ", 50, 0, 50);
2111 fhVertexZ =
new TH1F(
"fhVertexZ",
"z vertex",40,-20,20);
2114 fhVertexXAccept =
new TH1F(
"fhVertexXAccept",
"vertex after cut",600,-3,3);
2120 fhVertexZAccept =
new TH1F(
"fhVertexZAccept",
"z vertex after cut",40,-20,20);
2135 fhVertexZMC =
new TH1F(
"fhVertexZMC",
"z vertex",40,-20,20);
2138 fhVertexZAcceptMC =
new TH1F(
"fhVertexZAcceptMC",
"z vertex after cut",40,-20,20);
2142 for(
Int_t ic =0; ic<icmax; ic++){
2146 Form(
"fhDphiTriggerJetMB") :
2149 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]) ,bgtype[ir].
Data()));
2151 fhDphiTriggerJet[ic][it][ir] =
new TH2F(name.Data(),
"Deltaphi trig-jet",75,-50,100, 100, -0.5*TMath::Pi(),1.5*TMath::Pi());
2158 fhDphiTriggerJetAccept =
new TH1F(
"fhDphiTriggerJetAccept",
"Deltaphi trig-jet after cut",50, -0.5*TMath::Pi(),1.5*TMath::Pi());
2161 fhDphiTTTT[
kRef] =
new TH1F(
"fhDphiTTTT67",
"Deltaphi between multiple TT",50, -0.5*TMath::Pi(),1.5*TMath::Pi());
2167 fhJetPhiIncl =
new TH2F(
"fhJetPhiIncl",
"Azim dist jets vs pTjet", 50, 0, 100, 50,-TMath::Pi(),TMath::Pi());
2170 fhJetEtaIncl =
new TH2F(
"fhJetEtaIncl",
"Eta dist inclusive jets vs pTjet", 50,0, 100, 40,-0.9,0.9);
2173 fhTrackPhiCG =
new TH2F(
"fhTrackPhiCG",
"azim dist trig had vs pT,trk Glob Const", 50, 0, 50, 50,0,2*TMath::Pi());
2176 fhTrackPhiTPCG =
new TH2F(
"fhTrackPhiTPCG",
"azim dist trig had vs pT,trk TPC Const", 50, 0, 50, 50,0,2*TMath::Pi());
2180 for(
Int_t i=0; i<2; i++){
2181 name = (i==0) ?
"Neg" :
"Pos";
2183 Form(
"%s track 1/pt versus track phi", name.Data()), 36, 0, 2*TMath::Pi(), 40, 0, 0.4);
2187 Form(
"%s track 1/pt versus track eta", name.Data()), 20, -0.9, 0.9, 40, 0, 0.4);
2191 Form(
"%s track 1/pt versus track phi", name.Data()), 36, 0, 2*TMath::Pi(), 40, 0, 0.4);
2195 Form(
"%s track 1/pt versus track phi", name.Data()), 36, 0, 2*TMath::Pi(), 40, 0, 0.4);
2199 Form(
"%s track sigma(1/pt)/ 1/pt vs pt", name.Data()), 100, 0, 100, 250, 0, 1);
2203 for(
Int_t ic =0; ic<icmax; ic++){
2204 name = (ic==0) ? Form(
"fhCentralityMB") :
2208 fhCentrality[ic] =
new TH1F(name.Data(),
"Centrality",20,0,100);
2212 fhCentralityV0M =
new TH1F(
"hCentralityV0M",
"hCentralityV0M",20,0,100);
2215 fhCentralityV0A =
new TH1F(
"hCentralityV0A",
"hCentralityV0A",20,0,100);
2218 fhCentralityV0C =
new TH1F(
"hCentralityV0C",
"hCentralityV0C",20,0,100);
2221 fhCentralityZNA =
new TH1F(
"hCentralityZNA",
"hCentralityZNA",20,0,100);
2225 name = Form(
"fhCentralityTT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]));
2231 for(
Int_t ic =0; ic<icmax; ic++){
2232 name = (ic==0) ? Form(
"fhVzeroATotMultMB") :
2237 fhVzeroATotMult[ic] =
new TH1F(name.Data(),
"hVzeroATotMult",1000,0,1000);
2241 name = (ic==0) ?
"fhVzeroATotMultMB" :
2245 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2255 for(
Int_t ic =0; ic<icmax; ic++){
2256 name = (ic==0) ? Form(
"fhZNAEnergyMB") :
2261 fhZNAEnergy[ic] =
new TH1F(name.Data(),
"fhZNAEnergy",1000,0,200);
2265 name = (ic==0) ? Form(
"fhZNAEnergyMB") :
2269 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2278 for(
Int_t ic =0; ic<icmax; ic++){
2279 name = (ic==0) ? Form(
"fhTrackMultiplicityMB") :
2287 name = (ic==0) ? Form(
"fhTrackMultiplicityMB") :
2291 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2300 const Int_t dimZ = 3;
2301 const Int_t nBinsZ[dimZ] = { 100, 100, 25 };
2302 const Double_t lowBinZ[dimZ] = { 0.0, 0.0, 0.0};
2303 const Double_t hiBinZ[dimZ] = { 200.0, 1000.0, 250};
2305 for(
Int_t ic =0; ic<icmax; ic++){
2306 name = (ic==0) ? Form(
"fhZNAVzeroATrackMB") :
2312 Form(
"ZNA, V0A mult, track mult"),
2313 dimZ, nBinsZ,lowBinZ,hiBinZ);
2320 name = (ic==0) ? Form(
"fhZNAVzeroATrackMB") :
2324 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2349 name = (ic==0) ? Form(
"fhImpactParameterMB") :
2358 name = (ic==0) ? Form(
"fhImpactParameterMB") :
2362 name.Append(Form(
"TT%d%d", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2369 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.};
2373 for(
Int_t ic =0; ic<icmax; ic++){
2375 name = (ic==0) ? Form(
"fhJetPtGenMB%s",bgtype[ir].
Data()) :
2380 Form(
"Jet pT Gen %s",bgtype[ir].
Data()),bw*160,-20,300);
2384 name = (ic==0) ? Form(
"fhJetPtGenVsJetPtRecMB%s",bgtype[ir].
Data()) :
2389 "", bw*160,-20,300, bw*160,-20,300);
2393 name = (ic==0) ? Form(
"fhJetPtResolutionVsPtGenMB%s",bgtype[ir].
Data()) :
2394 Form(
"fhJetPtResolutionVsPtGen%d%d%s",TMath::Nint(
fCentralityBins[ic-1]),
2398 "Resolution", 20,0,100, 200,-1.,1.);
2405 -50, -48., -46., -44, -42.,
2406 -40., -38., -36., -34., -32., -30., -28., -26., -25., -24., -23., -22., -21.,
2407 -20., -19.5, -19., -18.5, -18., -17.5, -17., -16.5, -16., -15.5,
2408 -15., -14.5, -14., -13.5, -13., -12.5, -12., -11.5, -11., -10.5,
2409 -10.0, -9.8, -9.6, -9.4, -9.2,
2410 -9.0, -8.8, -8.6, -8.4, -8.2,
2411 -8.0, -7.8, -7.6, -7.4, -7.2,
2412 -7.0, -6.8, -6.6, -6.4, -6.2,
2413 -6.0, -5.8, -5.6, -5.4, -5.2,
2414 -5.0, -4.8, -4.6, -4.4, -4.2,
2415 -4.0, -3.8, -3.6, -3.4, -3.2,
2416 -3.0, -2.8, -2.6, -2.4, -2.2,
2417 -2.0, -1.9, -1.8, -1.7, -1.6, -1.5, -1.4, -1.3, -1.2, -1.1,
2418 -1.0,-0.95, -0.9, -0.85, -0.8, -0.75, -0.7, -0.65, -0.6, -0.55,
2419 -0.5,-0.48, -0.46, -0.44, -0.42,
2420 -0.4, -0.38, -0.36, -0.34, -0.32,
2421 -0.3, -0.28, -0.26, -0.24, -0.22,
2422 -0.2, -0.18, -0.16, -0.14, -0.12,
2423 -0.1, -0.09, -0.08, -0.07, -0.06,
2424 -0.05, -0.045, -0.04,-0.035 ,-0.03, -0.025, -0.02, -0.015, -0.01, -0.005,
2425 0, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.035, 0.04, 0.045,
2426 0.05, 0.06, 0.07, 0.08, 0.09,
2427 0.1, 0.12, 0.14, 0.16, 0.18,
2428 0.2, 0.22, 0.24, 0.26, 0.28,
2429 0.3, 0.32, 0.34, 0.36, 0.38,
2430 0.4, 0.42, 0.44, 0.46, 0.48,
2431 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8,0.85, 0.9, 0.95,
2432 1.0,1.1, 1.2,1.3, 1.4,1.5, 1.6, 1.7, 1.8, 1.9,
2433 2.0, 2.2, 2.4, 2.6, 2.8,
2434 3.0, 3.2, 3.4, 3.6, 3.8,
2435 4.0, 4.2, 4.4, 4.6, 4.8,
2436 5.0, 5.2, 5.4, 5.6, 5.8,
2437 6.0, 6.2, 6.4, 6.6, 6.8,
2438 7.0, 7.2, 7.4, 7.6, 7.8,
2439 8.0, 8.2, 8.4, 8.6, 8.8,
2440 9.0, 9.2, 9.4, 9.6, 9.8,
2441 10., 10.5, 11., 11.5, 12., 12.5, 13., 13.5, 14., 14.5,
2442 15., 15.5, 16., 16.5, 17., 17.5, 18., 18.5, 19., 19.5,
2443 20., 21., 22., 23., 24, 25, 26., 28., 30., 32.,34., 36., 38.,
2444 40., 42., 44., 46., 48., 50.};
2447 for(
Int_t ic =0; ic<icmax; ic++){
2448 name = (ic==0) ? Form(
"fhPtTrkTruePrimRecMB") :
2456 name = (ic==0) ? Form(
"fhPtTrkTruePrimGenMB") :
2463 name = (ic==0) ? Form(
"fhPtTrkSecOrFakeRecMB") :
2471 for(
Int_t iw=0; iw<21; iw++){
2472 name = Form(
"fhPtJetPrimVsPtJetRecMB%03d",TMath::Nint(100*iw*0.05));
2476 name = Form(
"fhDiffPtVsPtTrackTrueMB");
2482 fhDCAinXVsPt =
new TH2D(
"fhDCAinXVsPt",
"fhDCAinXVsPt",nbins, bins, 200, -10.,10);
2499 for(
Int_t ic =0; ic<icmax; ic++){
2501 name = (ic==0) ? Form(
"fh1NtriggersGenMB") :
2504 name.Append(Form(
"TT%d%d",TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2510 name = (ic==0) ? Form(
"fh1TriggerMultGenMB") :
2514 name.Append(Form(
"TT%d%d",TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it])));
2520 name = (ic==0) ?
"fHJetSpecGenMB" :
2524 name.Append(Form(
"TT%d%d%s", TMath::Nint(
fTTlow[it]), TMath::Nint(
fTThigh[it]), bgtype[ir].
Data()));
2530 name = (ic==0) ? Form(
"fhJetPhiGenMB") :
2537 name = (ic==0) ? Form(
"fhJetEtaGenMB") :
2545 name = (ic==0) ? Form(
"fhTrackPtGenMB") :
2570 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
2575 TH1::AddDirectory(oldStatus);
2601 if (vphi < -TMath::Pi()) vphi += TMath::TwoPi();
2602 else if (vphi > TMath::Pi()) vphi -= TMath::TwoPi();
2604 if (mphi < -TMath::Pi()) mphi += TMath::TwoPi();
2605 else if (mphi > TMath::Pi()) mphi -= TMath::TwoPi();
2608 if (dphi < -TMath::Pi()) dphi += TMath::TwoPi();
2609 else if (dphi > TMath::Pi()) dphi -= TMath::TwoPi();
2620 if(!trkCont)
return 0.0;
2623 AliVParticle* track = NULL;
2626 Bool_t bTTJetFound = kFALSE;
2630 phiTT = triggerHadron->Phi();
2631 etaTT = triggerHadron->Eta();
2635 jetCont->ResetCurrentID();
2638 if(jet->
Pt() < triggerHadron->Pt()*0.5)
continue;
2642 track = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2643 if(!track)
continue;
2644 if(track != triggerHadron)
continue;
2648 bTTJetFound = kTRUE;
2651 if(bTTJetFound)
break;
2664 trkCont->ResetCurrentID();
2666 if(!track)
continue;
2670 if(
GetDeltaR(phiTT, track->Phi(), etaTT, track->Eta()) <
fCutPhi)
continue;
2673 if(TMath::Abs(track->GetLabel()) == 99999)
continue;
2676 sumPt += track->Pt();
2685 area -= fCutPhi*fCutPhi*TMath::Pi();
2688 area -= (fCutPhi*fCutPhi*(TMath::Pi()-alpha) + fCutPhi*TMath::Sin(alpha)*(
fTrackEtaWindow - TMath::Abs(etaTT)));
2699 if(!jetCont)
return rhoKT;
2702 AliVParticle* constTrack = NULL;
2703 Bool_t bKTJetCloseToTT = kFALSE;
2708 jetCont->ResetCurrentID();
2713 bKTJetCloseToTT = kFALSE;
2716 if(jet->
Pt() > triggerHadron->Pt()*0.5){
2718 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2719 if(!constTrack)
continue;
2720 if(constTrack == triggerHadron){
2721 bKTJetCloseToTT = kTRUE;
2727 if(bKTJetCloseToTT)
continue;
2732 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2733 if(!constTrack)
continue;
2734 if(TMath::Abs(constTrack->GetLabel()) == 99999){
2735 sumEmbPt += constTrack->Pt();
2740 jetpt = jet->
Pt()- sumEmbPt;
2743 if(jetpt <0.005) jetpt = 0.;
2749 rhoKT = TMath::Median(nJetAcc,
frhovec);
2759 if(!jetCont)
return rhoKTcms;
2762 AliVParticle* constTrack = NULL;
2763 Bool_t bKTJetCloseToTT = kFALSE;
2770 jetCont->ResetCurrentID();
2775 bKTJetCloseToTT = kFALSE;
2778 if(jet->
Pt() > triggerHadron->Pt()*0.5){
2780 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2781 if(!constTrack)
continue;
2782 if(constTrack != triggerHadron)
continue;
2783 bKTJetCloseToTT = kTRUE;
2788 if(bKTJetCloseToTT)
continue;
2793 constTrack = (AliVParticle*) (jet->
TrackAt(iq,trkCont->GetArray()));
2794 if(!constTrack)
continue;
2795 if(TMath::Abs(constTrack->GetLabel()) == 99999){
2796 sumEmbPt += constTrack->Pt();
2802 areaAllJets += jet->
Area();
2804 jetpt = jet->
Pt()- sumEmbPt;
2807 areaPhysJets += jet->
Area();
2814 rhoKTcms = TMath::Median(nJetAcc,
frhovec)*(areaPhysJets/areaAllJets);
2825 return sqrt(dphi*dphi + deta*deta);
2833 if(!jRec)
return -1.0;
2834 if(!jconRec)
return -1.0;
2835 if(!jGen)
return -1.0;
2836 if(!jconGen)
return -1.0;
2838 Double_t fraction = 0., sumPt = 0.;
2841 AliVParticle *pgen, *prec;
2852 if(TMath::Abs(prec->GetLabel()) == TMath::Abs(pgen->GetLabel())){
2856 if(TMath::Abs(prec->Eta() - pgen->Eta()) > 1e-4)
continue;
2857 if(TMath::Abs(
RelativePhi(prec->Phi(), pgen->Phi())) > 1e-4)
continue;
2858 if(TMath::Abs(prec->Pt() - pgen->Pt()) > 1e-4)
continue;
2866 sumPt += pgen->Pt();
2873 fraction = sumPt/jetPt2;
2887 if(ip==321)
return kTRUE;
2888 if(ip==130)
return kTRUE;
2889 if(ip==310)
return kTRUE;
2890 if(ip==3112)
return kTRUE;
2891 if(ip==3122)
return kTRUE;
2892 if(ip==3222)
return kTRUE;
2893 if(ip==3312)
return kTRUE;
2894 if(ip==3322)
return kTRUE;
2895 if(ip==3334)
return kTRUE;
Double_t GetDeltaR(Double_t phi1, Double_t phi2, Double_t eta1, Double_t eta2)
TH2D * fhPtTrkSecOrFakeRec[kCAll]
pt spectrum of true generated primary track
TH1F * fhVertexZAcceptTT
gc vertexZ accepted after vtx cut
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.
TH1D * fhDeltaPtEmbBc2Bc[kCAll][kTT][kRho]
embedded delta pT versus pT of the embedded jet (emb track is perp to TT)
AliVParticle * fTrigTracksGen[kTT][999]
TH2D * fhDCAinXVsPt
hybrid TPC constrained track phi vs track pT
TH1F * fhCentralityV0C
centrality from V0A
TH1F * fhVertexZAccept
gc vertexZ accepted after vtx cut
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]
pt jet gen level vs pT jet rec level
Double_t EstimateBgCone(AliJetContainer *jetCont, AliParticleContainer *trkArray, AliVParticle *triggerHadron, Bool_t isGen=kFALSE)
TH2D * fhPtTrkTruePrimGen[kCAll]
pt spectrum of true reconstructed primary tracks
TH2F * fhKTAreaPt
delta pT from RndCone using rho from perp cone inclusive event
Bool_t IsEventInAcceptance(AliVEvent *event)
TH1D * fhDeltaPt[kCAll][kTT][kRho]
jet area times rho from perp cone
ClassImp(AliAnalysisTaskHJetSpectra) AliAnalysisTaskHJetSpectra
TH1D * fhDeltaPtEmbPerp[kCAll][kTT][kRho]
embedded delta pT versus pT of the embedded jet
Bool_t IsSignalJetInAcceptance(AliEmcalJet *jet, Bool_t suppressGhost=1)
TH2D * fhDeltaPtEmb2D[kCAll][kTT][kRho]
embedded delta pT
TH1D * fh1NtriggersGen[kCAll][kTT]
tirgger multiplicity in event
TH1F * fhRhoIncl[kCAll][kRho]
gc X=rho from perp cone, Y=centrality
TArrayD fRhoRec[kTT]
Y DCA versus pT of non strange tracks.
TH1F * fhVertexXAccept
gc vertexZ inclusive
TH1D * fhDeltaPtEmb[kCAll][kTT][kRho]
delta pT
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
TH1D * fhDeltaPtIncl[kCAll][kRho]
embedded delta pT versus pT of the embedded jet (emb track is backtoback in azimtuh w...
TH2D * fhInvPtQVsPhi[2]
track Y= rec pt - true pt X= true track pT
TRandom3 * fRandom
impact parameter from hijing
Double_t fMinFractionShared
TH1D * fh1TriggerMult[kCAll][kTT]
trigger counter
TH2D * fhSigmaPtOverPtVsPt[2]
q*1/pT versus eta
TH1F * fhVertexXAcceptTT
gc vertexZ accepted after vtx cut
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 * fhCentrality[kCAll]
minimum bias eta inclusive
Bool_t IsMCEventInAcceptance(AliVEvent *event)
AliParticleContainer * GetParticleContainer() const
TH2F * fhJetEtaGen[kCAll]
jet eta vs jet pT
TH2D * fhPtJetPrimVsPtJetRec[21]
pt spectrum of reconstructed fake or secondary tracks
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
TH2D * fhDCAinYVsPtNonStrange
X DCA versus pT of non strange tracks.
Double_t fSignalJetEtaWindow
TH1F * fhCentralityV0A
centrality V0 multiplicity A+C
void Terminate(Option_t *)
Bool_t IsTrackInAcceptance(AliVParticle *track, Bool_t isGen=0)
TH1F * fhZNAEnergy[kCAll]
V0A multiplicity.
TH2D * fhDeltaPtEmbPerp2D[kCAll][kTT][kRho]
embedded delta pT (emb track is perp to TT)
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 * fhInvPtQVsPhiCSide[2]
q*1/pT versus eta
AliAnalysisUtils * fHelperClass
A random number.
Double_t GetConePt(Double_t eta, Double_t phi, Double_t radius, AliParticleContainer *trkArray, Bool_t isGen)
TH1F * fhDphiTTTT[kTT]
Dphi of accepted jets after dphi cut.
TH1D * fhTrackMultiplicityTT[kCAll][kTT]
multiplicity of tracks
TH2D * fhJetPtGenVsJetPtRec[kCAll][kRho]
pt distribution of generator level jets
TH2F * fhDphiTriggerJetGen[kCAll][kTT][kRho]
gc Delta phi versus jet pT
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)
TH1F * fhVertexYAccept
gc vertexZ accepted after vtx cut
Double_t fSignalJetRadius
TH1F * fhZNAEnergyTT[kCAll][kTT]
ZDC A neutral energy for given V0A centrality selection.
TH2D * fhDCAinXVsPtStrange
Y DCA versus pT.
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
TH2F * fhJetEtaIncl
minimum bias phi inclusive
TH1F * fhRhoTT[kCAll][kTT][kRho]
TT associated spectrum of jets.
TH1F * fhDphiTriggerJetAccept
gc Delta phi versus jet pT
TH2F * fhJetPhiIncl
Dphi between multiple trigger tracks.
TH2D * fHJetSpec[kCAll][kTT][kRho]
trigger multiplicity in event
Double_t fImpParam
gc value is filled, if pythia header is accessible
AliEmcalList * fOutput
!output list
TH2D * fhDiffPtVsPtTrackTrue
pt spectrum of reconstructed jets without fake track pT vs reconstructed jet pT
Short_t TrackAt(Int_t idx) const
Double_t GetSimPrimaryVertex()
TH1F * fARhoTT[kCAll][kTT][kRho]
gc X=rho from perp cone, Y=centrality
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)
TH1F * fhVertexYAcceptTT
gc vertexZ accepted after vtx cut
Base task in the EMCAL jet framework.
TH2D * fhInvPtQVsPhiASide[2]
q*1/pT versus eta
Represent a jet reconstructed using the EMCal jet framework.
Bool_t IsStrange(Int_t ip)
void UserCreateOutputObjects()
TH2D * fhDCAinYVsPtStrange
X DCA versus pT of strange tracks.
TH1F * fhVzeroATotMult[kCAll]
centrality from ZNA
TH1F * fhVertexZMC
gc vertexZ accepted after vtx cut
TH2D * fhInvPtQVsEta[2]
q*1/pT versus phi
AliVParticle * fTrigTracks[kTT][999]
TH1D * fhImpactParameter[kCAll]
ZNA energy versus Vzero mult. versus track mult. in events with TT.
TH2F * fhTrackPhiTPCG
hybrid constrained global track phi vs track pT
Bool_t RetrieveEventObjects()
TH2D * fhDCAinXVsPtNonStrange
Y DCA versus pT of strange tracks.
TH2D * fhDeltaPtEmbBc2Bc2D[kCAll][kTT][kRho]
embedded delta pT (emb track is back-to-back in azimuth to TT)
TH1F * fhCentralityZNA
centrality from V0C
TH2D * fhDCAinYVsPt
X DCA versus pT.
Bool_t fInitializedLocal
gc Vertex selection helper
TH2D * fhPtTrkTruePrimRec[kCAll]
pt jet resolution
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