19 #include <TClonesArray.h> 25 #include <TLorentzVector.h> 28 #include "AliMCEvent.h" 29 #include "AliESDVertex.h" 30 #include "AliAODVertex.h" 31 #include "AliAODPid.h" 35 #include "AliVTrack.h" 36 #include "AliVHeader.h" 41 #include "AliAODTrack.h" 42 #include "AliVParticle.h" 47 #include "AliGenHijingEventHeader.h" 48 #include "AliHFJetsTaggingVertex.h" 62 AliEmcalJetTree::
AliEmcalJetTree() :
TNamed("CustomTree", "CustomTree"), fJetTree(0), fInitialized(0), fSaveEventProperties(0), fSaveConstituents(0), fSaveConstituentsIP(0), fSaveConstituentPID(0), fSaveJetShapes(0), fSaveMCInformation(0), fSaveSecondaryVertices(0), fSaveTriggerTracks(0), fExtractionPercentages(), fExtractionPercentagePtBins(), fExtractionJetTypes_HM(), fExtractionJetTypes_PM()
76 AliEmcalJetTree::AliEmcalJetTree(
const char* name) :
TNamed(name, name), fJetTree(0), fInitialized(0), fSaveEventProperties(0), fSaveConstituents(0), fSaveConstituentsIP(0), fSaveConstituentPID(0), fSaveJetShapes(0), fSaveMCInformation(0), fSaveSecondaryVertices(0), fSaveTriggerTracks(0), fExtractionPercentages(), fExtractionPercentagePtBins(), fExtractionJetTypes_HM(), fExtractionJetTypes_PM()
101 AliFatal(
"Tree is not initialized.");
112 Bool_t inPtRange = kFALSE;
150 AliVParticle* particle =
static_cast<AliVParticle*
>(jet->
TrackAt(i, trackCont->GetArray()));
151 if(!particle)
continue;
173 fJetTree->SetBranchAddress(
"Jet_Const_CovIPd", trackIP_d0cov);
174 fJetTree->SetBranchAddress(
"Jet_Const_CovIPz", trackIP_z0cov);
175 fJetTree->SetBranchAddress(
"Jet_Const_IPd", trackIP_d0);
176 fJetTree->SetBranchAddress(
"Jet_Const_IPz", trackIP_z0);
181 fJetTree->SetBranchAddress(
"Jet_Const_PID_ITS", trackPID_ITS);
182 fJetTree->SetBranchAddress(
"Jet_Const_PID_TPC", trackPID_TPC);
183 fJetTree->SetBranchAddress(
"Jet_Const_PID_TOF", trackPID_TOF);
184 fJetTree->SetBranchAddress(
"Jet_Const_PID_TRD", trackPID_TRD);
185 fJetTree->SetBranchAddress(
"Jet_Const_PID_Reconstructed", trackPID_Reco);
187 fJetTree->SetBranchAddress(
"Jet_Const_PID_Truth", trackPID_Truth);
194 fJetTree->SetBranchAddress(
"Jet_SecVtx_X", secVtx_X);
195 fJetTree->SetBranchAddress(
"Jet_SecVtx_Y", secVtx_Y);
196 fJetTree->SetBranchAddress(
"Jet_SecVtx_Z", secVtx_Z);
197 fJetTree->SetBranchAddress(
"Jet_SecVtx_Mass", secVtx_Mass);
198 fJetTree->SetBranchAddress(
"Jet_SecVtx_Lxy", secVtx_Lxy);
199 fJetTree->SetBranchAddress(
"Jet_SecVtx_SigmaLxy", secVtx_SigmaLxy);
200 fJetTree->SetBranchAddress(
"Jet_SecVtx_Chi2", secVtx_Chi2);
201 fJetTree->SetBranchAddress(
"Jet_SecVtx_Dispersion", secVtx_Dispersion);
220 fJetTree->SetBranchAddress(
"Jet_TriggerTrack_Pt", triggerTrackPt);
221 fJetTree->SetBranchAddress(
"Jet_TriggerTrack_dEta", triggerTrackDeltaEta);
222 fJetTree->SetBranchAddress(
"Jet_TriggerTrack_dPhi", triggerTrackDeltaPhi);
241 AliFatal(
"Tree is already initialized.");
276 fJetTree->Branch(
"Jet_Const_IPd",&dummy,
"Jet_Const_IPd[Jet_NumConstituents]/F");
277 fJetTree->Branch(
"Jet_Const_IPz",&dummy,
"Jet_Const_IPz[Jet_NumConstituents]/F");
278 fJetTree->Branch(
"Jet_Const_CovIPd",&dummy,
"Jet_Const_CovIPd[Jet_NumConstituents]/F");
279 fJetTree->Branch(
"Jet_Const_CovIPz",&dummy,
"Jet_Const_CovIPz[Jet_NumConstituents]/F");
288 fJetTree->Branch(
"Jet_Const_PID_ITS",&dummy,
"Jet_Const_PID_ITS[Jet_NumConstituents]/F");
289 fJetTree->Branch(
"Jet_Const_PID_TPC",&dummy,
"Jet_Const_PID_TPC[Jet_NumConstituents]/F");
290 fJetTree->Branch(
"Jet_Const_PID_TOF",&dummy,
"Jet_Const_PID_TOF[Jet_NumConstituents]/F");
291 fJetTree->Branch(
"Jet_Const_PID_TRD",&dummy,
"Jet_Const_PID_TRD[Jet_NumConstituents]/F");
293 fJetTree->Branch(
"Jet_Const_PID_Reconstructed",&dummy,
"Jet_Const_PID_Reconstructed[Jet_NumConstituents]/S");
295 fJetTree->Branch(
"Jet_Const_PID_Truth",&dummy,
"Jet_Const_PID_Truth[Jet_NumConstituents]/S");
316 fJetTree->Branch(
"Jet_SecVtx_X",&dummy,
"Jet_SecVtx_X[Jet_NumSecVertices]/F");
317 fJetTree->Branch(
"Jet_SecVtx_Y",&dummy,
"Jet_SecVtx_Y[Jet_NumSecVertices]/F");
318 fJetTree->Branch(
"Jet_SecVtx_Z",&dummy,
"Jet_SecVtx_Z[Jet_NumSecVertices]/F");
319 fJetTree->Branch(
"Jet_SecVtx_Mass",&dummy,
"Jet_SecVtx_Mass[Jet_NumSecVertices]/F");
320 fJetTree->Branch(
"Jet_SecVtx_Lxy",&dummy,
"Jet_SecVtx_Lxy[Jet_NumSecVertices]/F");
321 fJetTree->Branch(
"Jet_SecVtx_SigmaLxy",&dummy,
"Jet_SecVtx_SigmaLxy[Jet_NumSecVertices]/F");
322 fJetTree->Branch(
"Jet_SecVtx_Chi2",&dummy,
"Jet_SecVtx_Chi2[Jet_NumSecVertices]/F");
323 fJetTree->Branch(
"Jet_SecVtx_Dispersion",&dummy,
"Jet_SecVtx_Dispersion[Jet_NumSecVertices]/F");
330 fJetTree->Branch(
"Jet_TriggerTrack_Pt",&dummy,
"Jet_TriggerTrack_Pt[Jet_NumTriggerTracks]/F");
331 fJetTree->Branch(
"Jet_TriggerTrack_dEta",&dummy,
"Jet_TriggerTrack_dEta[Jet_NumTriggerTracks]/F");
332 fJetTree->Branch(
"Jet_TriggerTrack_dPhi",&dummy,
"Jet_TriggerTrack_dPhi[Jet_NumTriggerTracks]/F");
343 fHadronMatchingRadius(0.4),
344 fTrueJetMatchingRadius(0.4),
345 fSecondaryVertexMaxChi2(1e10),
346 fSecondaryVertexMaxDispersion(0.05),
347 fCalculateSecondaryVertices(kTRUE),
349 fSetEmcalJetFlavour(0),
350 fEventPercentage(1.0),
352 fTruthMaxLabel(100000),
353 fEventCut_TriggerTrackMinPt(0),
354 fEventCut_TriggerTrackMaxPt(0),
355 fEventCut_TriggerTrackMinLabel(-9999999),
356 fEventCut_TriggerTrackMaxLabel(+9999999),
359 fTruthParticleArray(0),
360 fTruthJetsArrayName(
""),
361 fTruthJetsRhoName(
""),
362 fTruthParticleArrayName(
"mcparticles"),
364 fTriggerTracks_Eta(),
372 DefineOutput(2, TTree::Class());
409 DefineOutput(2, TTree::Class());
426 AliFatal(
"Jet input container not found!");
430 AliFatal(
"Particle input container not found attached to jets!");
444 AddHistogram2D<TH2D>(
"hTrackCount",
"Number of tracks in acceptance vs. centrality",
"COLZ", 500, 0., 5000., 100, 0, 100,
"N tracks",
"Centrality",
"dN^{Events}/dN^{Tracks}");
445 AddHistogram2D<TH2D>(
"hBackgroundPt",
"Background p_{T} distribution",
"", 150, 0., 150., 100, 0, 100,
"Background p_{T} (GeV/c)",
"Centrality",
"dN^{Events}/dp_{T}");
447 AddHistogram2D<TH2D>(
"hJetPtRaw",
"Jets p_{T} distribution (raw)",
"COLZ", 300, 0., 300., 100, 0, 100,
"p_{T, jet} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
448 AddHistogram2D<TH2D>(
"hJetPt",
"Jets p_{T} distribution (background subtracted)",
"COLZ", 400, -100., 300., 100, 0, 100,
"p_{T, jet} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
449 AddHistogram2D<TH2D>(
"hJetPtExtracted",
"Extracted jets p_{T} distribution (background subtracted)",
"COLZ", 400, -100., 300., 100, 0, 100,
"p_{T, jet} (GeV/c)",
"Centrality",
"dN^{Jets}/dp_{T}");
450 AddHistogram2D<TH2D>(
"hJetPhiEta",
"Jet angular distribution #phi/#eta",
"COLZ", 180, 0., 2*TMath::Pi(), 100, -2.5, 2.5,
"#phi",
"#eta",
"dN^{Jets}/d#phi d#eta");
451 AddHistogram2D<TH2D>(
"hJetArea",
"Jet area",
"COLZ", 200, 0., 2., 100, 0, 100,
"Jet A",
"Centrality",
"dN^{Jets}/dA");
453 AddHistogram2D<TH2D>(
"hDeltaPt",
"#delta p_{T} distribution",
"", 400, -100., 300., 100, 0, 100,
"p_{T, cone} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
455 AddHistogram2D<TH2D>(
"hConstituentPt",
"Jet constituent p_{T} distribution",
"COLZ", 400, 0., 300., 100, 0, 100,
"p_{T, const} (GeV/c)",
"Centrality",
"dN^{Const}/dp_{T}");
456 AddHistogram2D<TH2D>(
"hConstituentPhiEta",
"Jet constituent relative #phi/#eta distribution",
"COLZ", 120, -0.6, 0.6, 120, -0.6, 0.6,
"#Delta#phi",
"#Delta#eta",
"dN^{Const}/d#phi d#eta");
458 AddHistogram1D<TH1D>(
"hExtractionPercentage",
"Extracted jets p_{T} distribution (background subtracted)",
"e1p", 400, -100., 300.,
"p_{T, jet} (GeV/c)",
"Extracted percentage");
461 AddHistogram2D<TH2D>(
"hTrackPt",
"Tracks p_{T} distribution",
"", 300, 0., 300., 100, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
462 AddHistogram2D<TH2D>(
"hTrackPhi",
"Track angular distribution in #phi",
"LEGO2", 180, 0., 2*TMath::Pi(), 100, 0, 100,
"#phi",
"Centrality",
"dN^{Tracks}/(d#phi)");
463 AddHistogram2D<TH2D>(
"hTrackEta",
"Track angular distribution in #eta",
"LEGO2", 100, -2.5, 2.5, 100, 0, 100,
"#eta",
"Centrality",
"dN^{Tracks}/(d#eta)");
464 AddHistogram2D<TH2D>(
"hTrackPhiEta",
"Track angular distribution #phi/#eta",
"COLZ", 180, 0., 2*TMath::Pi(), 100, -2.5, 2.5,
"#phi",
"#eta",
"dN^{Tracks}/d#phi d#eta");
466 AddHistogram2D<TH2D>(
"hTrackEtaPt",
"Track angular distribution in #eta vs. p_{T}",
"LEGO2", 100, -2.5, 2.5, 300, 0., 300.,
"#eta",
"p_{T} (GeV/c)",
"dN^{Tracks}/(d#eta dp_{T})");
467 AddHistogram2D<TH2D>(
"hTrackPhiPt",
"Track angular distribution in #phi vs. p_{T}",
"LEGO2", 180, 0, 2*TMath::Pi(), 300, 0., 300.,
"#phi",
"p_{T} (GeV/c)",
"dN^{Tracks}/(d#phi dp_{T})");
482 AliFatal(
"VertexerCuts not given but secondary vertex calculation turned on.");
491 for(
Int_t i=0; i<static_cast<Int_t>(extractionPercentages.size()); i++)
493 Double_t percentage = extractionPercentages[i];
494 for(
Int_t pt=static_cast<Int_t>(extractionPtBins[i*2]); pt<static_cast<Int_t>(extractionPtBins[i*2+1]); pt++)
503 if(dynamic_cast<AliGenHijingEventHeader*>(MCEvent()->GenEventHeader()))
504 AddHistogram1D<TH1D>(
"hHijingNcoll",
"N_{coll} from HIJING",
"e1p", 1000, 0., 5000,
"N_{coll}",
"dN^{Events}/dN^{N_{coll}}");
527 const AliVVertex* myVertex = InputEvent()->GetPrimaryVertex();
528 if(!myVertex && MCEvent())
529 myVertex = MCEvent()->GetPrimaryVertex();
532 vtxX = myVertex->GetX();
533 vtxY = myVertex->GetY();
534 vtxZ = myVertex->GetZ();
537 AliVHeader* eventIDHeader = InputEvent()->GetHeader();
539 eventID = eventIDHeader->GetEventIdAsLong();
544 if(AliGenHijingEventHeader* mcHeader = dynamic_cast<AliGenHijingEventHeader*>(MCEvent()->GenEventHeader()))
546 Double_t ncoll = mcHeader->NN() + mcHeader->NNw() + mcHeader->NwN() + mcHeader->NwNw();
559 Int_t currentJetType_HM = 0;
560 Int_t currentJetType_PM = 0;
561 Int_t currentJetType_IC = 0;
565 GetJetType(jet, currentJetType_HM, currentJetType_PM, currentJetType_IC);
571 std::vector<Float_t> vecSigITS; std::vector<Float_t> vecSigTPC; std::vector<Float_t> vecSigTRD; std::vector<Float_t> vecSigTOF; std::vector<Short_t> vecRecoPID; std::vector<Short_t> vecTruePID;
572 std::vector<Float_t> vec_d0; std::vector<Float_t> vec_d0cov; std::vector<Float_t> vec_z0; std::vector<Float_t> vec_z0cov;
575 for(
Int_t i = 0; i < jet->GetNumberOfTracks(); i++)
577 AliVParticle* particle =
static_cast<AliVParticle*
>(jet->TrackAt(i,
fTracksCont->GetArray()));
578 if(!particle)
continue;
583 vecSigITS.push_back(sigITS); vecSigTPC.push_back(sigTPC); vecSigTOF.push_back(sigTOF); vecSigTRD.push_back(sigTRD); vecRecoPID.push_back(recoPID); vecTruePID.push_back(truePID);
589 vec_d0.push_back(d0); vec_d0cov.push_back(d0cov); vec_z0.push_back(z0); vec_z0cov.push_back(z0cov);
594 std::vector<Float_t> secVtx_X; std::vector<Float_t> secVtx_Y; std::vector<Float_t> secVtx_Z; std::vector<Float_t> secVtx_Mass; std::vector<Float_t> secVtx_Lxy; std::vector<Float_t> secVtx_SigmaLxy; std::vector<Float_t> secVtx_Chi2; std::vector<Float_t> secVtx_Dispersion;
596 ReconstructSecondaryVertices(myVertex, jet, secVtx_X, secVtx_Y, secVtx_Z, secVtx_Mass, secVtx_Lxy, secVtx_SigmaLxy, secVtx_Chi2, secVtx_Dispersion);
601 for(
UInt_t i=0; i<triggerTracks_dEta.size(); i++)
607 triggerTracks_dPhi[i] = -triggerTracks_dPhi[i];
612 currentJetType_PM,currentJetType_HM,currentJetType_IC,matchedJetPt,truePtFraction,
fPtHard,
613 vecSigITS, vecSigTPC, vecSigTOF, vecSigTRD, vecRecoPID, vecTruePID,
615 vec_d0, vec_z0, vec_d0cov, vec_z0cov,
616 secVtx_X, secVtx_Y, secVtx_Z, secVtx_Mass, secVtx_Lxy, secVtx_SigmaLxy, secVtx_Chi2, secVtx_Dispersion);
673 trueRho = rho->GetVal();
675 TClonesArray* truthArray =
static_cast<TClonesArray*
>(InputEvent()->FindListObject(Form(
"%s",
fTruthJetsArrayName.Data())));
680 for(
Int_t i=0; i<truthArray->GetEntries(); i++)
683 if(truthJet->
Pt() < 0.15)
687 Double_t deltaPhi = TMath::Min(TMath::Abs(truthJet->
Phi()-jet->
Phi()),TMath::TwoPi() - TMath::Abs(truthJet->
Phi()-jet->
Phi()));
688 Double_t deltaR = TMath::Sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
695 if(deltaR < bestMatchDeltaR)
697 bestMatchDeltaR = deltaR;
698 matchedJetPt = truthJet->
Pt() - truthJet->
Area()* trueRho;
712 AliVParticle* particle =
static_cast<AliVParticle*
>(jet->
TrackAt(iConst,
fTracksCont->GetArray()));
713 if(!particle)
continue;
714 if(particle->Pt() < 1e-6)
continue;
718 pt_nonMC += particle->Pt();
719 pt_all += particle->Pt();
722 truePtFraction = (pt_nonMC/pt_all);
738 AliAODMCParticle* parton[2];
743 Int_t pdg = TMath::Abs(parton[0]->PdgCode());
756 Int_t pdg = TMath::Abs(parton[1]->PdgCode());
758 else if (
fVtxTagger->IsBMeson(pdg)) typeHM = 5;
763 jet->
AddFlavourTag(static_cast<Int_t>(TMath::Power(2, typeHM)));
778 Double_t delta1Phi = TMath::Min(TMath::Abs(parton1phi-jet->
Phi()),TMath::TwoPi() - TMath::Abs(parton1phi-jet->
Phi()));
779 Double_t delta1R = TMath::Sqrt(delta1Eta*delta1Eta + delta1Phi*delta1Phi);
781 Double_t delta2Phi = TMath::Min(TMath::Abs(parton2phi-jet->
Phi()),TMath::TwoPi() - TMath::Abs(parton2phi-jet->
Phi()));
782 Double_t delta2R = TMath::Sqrt(delta2Eta*delta2Eta + delta2Phi*delta2Phi);
790 if(delta1R < delta2R)
804 Bool_t isDCA=track->PropagateToDCA(vtx,InputEvent()->GetMagneticField(),3.0,d0rphiz,covd0);
816 void AliAnalysisTaskJetExtractor::ReconstructSecondaryVertices(
const AliVVertex* primVtx,
const AliEmcalJet* jet, std::vector<Float_t>& secVtx_X, std::vector<Float_t>& secVtx_Y, std::vector<Float_t>& secVtx_Z, std::vector<Float_t>& secVtx_Mass, std::vector<Float_t>& secVtx_Lxy, std::vector<Float_t>& secVtx_SigmaLxy, std::vector<Float_t>& secVtx_Chi2, std::vector<Float_t>& secVtx_Dispersion)
822 Double_t vtxPos[3] = {primVtx->GetX(), primVtx->GetY(), primVtx->GetZ()};
824 primVtx->GetCovarianceMatrix(covMatrix);
825 AliESDVertex* esdVtx =
new AliESDVertex(vtxPos, covMatrix, primVtx->GetChi2(), primVtx->GetNContributors());
827 TClonesArray* secVertexArr = 0;
828 vctr_pair_dbl_int arrDispersion;
829 arrDispersion.reserve(5);
835 secVertexArr =
new TClonesArray(
"AliAODVertex");
836 Int_t nDauRejCount = 0;
841 InputEvent()->GetMagneticField(),
850 secVertexArr->Clear();
858 secVertexArr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(
"VerticesHF"));
864 for(
Int_t i=0; i<secVertexArr->GetEntriesFast(); i++)
866 AliAODVertex* secVtx = (AliAODVertex*)(secVertexArr->UncheckedAt(i));
868 if((strcmp(secVtx->GetParent()->ClassName(),
"AliAODRecoDecayHF3Prong")))
872 Double_t effX = secVtx->GetX() - esdVtx->GetX();
873 Double_t effY = secVtx->GetY() - esdVtx->GetY();
878 Double_t dispersion = arrDispersion[i].first;
884 Double_t Lxy = TMath::Sqrt(effX*effX + effY*effY);
886 Double_t signLxy = effX * jetP[0] + effY * jetP[1];
887 if (signLxy < 0.) Lxy *= -1.;
890 AliAODVertex* aodVtx = (AliAODVertex*)(primVtx);
892 sigmaLxy = aodVtx->ErrorDistanceXYToVertex(secVtx);
898 secVtx_X.push_back(secVtx->GetX()); secVtx_Y.push_back(secVtx->GetY()); secVtx_Z.push_back(secVtx->GetZ()); secVtx_Chi2.push_back(secVtx->GetChi2perNDF());
899 secVtx_Dispersion.push_back(dispersion); secVtx_Mass.push_back(mass); secVtx_Lxy.push_back(Lxy); secVtx_SigmaLxy.push_back(sigmaLxy);
904 secVertexArr->Clear();
923 Int_t absPDG = TMath::Abs(part->PdgCode());
924 if ((absPDG > 300 && absPDG < 400) || (absPDG > 3000 && absPDG < 4000))
927 Double_t rsquared = (part->Eta() - jet->
Eta())*(part->Eta() - jet->
Eta()) + (part->Phi() - jet->
Phi())*(part->Phi() - jet->
Phi());
936 else if(MCEvent() && (MCEvent()->Stack()))
938 AliStack*
stack = MCEvent()->Stack();
940 for(
Int_t i=0; i<stack->GetNtrack(); i++)
942 TParticle *part = stack->Particle(i);
946 Int_t absPDG = TMath::Abs(part->GetPdgCode());
947 if ((absPDG > 300 && absPDG < 400) || (absPDG > 3000 && absPDG < 4000))
950 Double_t rsquared = (part->Eta() - jet->
Eta())*(part->Eta() - jet->
Eta()) + (part->Phi() - jet->
Phi())*(part->Phi() - jet->
Phi());
981 AliVParticle* jetConst =
static_cast<AliVParticle*
>(jet->
TrackAt(i,
fTracksCont->GetArray()));
982 if(!jetConst)
continue;
986 Double_t deltaPhi = TMath::Min(TMath::Abs(jet->
Phi() - jetConst->Phi()), TMath::TwoPi() - TMath::Abs(jet->
Phi() - jetConst->Phi()));
987 if(!((jet->
Phi() - jetConst->Phi() < 0) && (jet->
Phi() - jetConst->Phi() <= TMath::Pi())))
988 deltaPhi = -deltaPhi;
995 const Int_t kNumRandomConesPerEvent = 4;
996 for(
Int_t iCone=0; iCone<kNumRandomConesPerEvent; iCone++)
1006 tmpRandConePt += track->Pt();
1028 if(!particle)
return;
1031 AliAODTrack* aodtrack =
dynamic_cast<AliAODTrack*
>(particle);
1036 recoPID = aodtrack->GetMostProbablePID();
1037 AliAODPid* pidObj = aodtrack->GetDetPid();
1041 sigITS = pidObj->GetITSsignal();
1042 sigTPC = pidObj->GetTPCsignal();
1043 sigTOF = pidObj->GetTOFsignal();
1044 sigTRD = pidObj->GetTRDsignal();
1052 AliAODMCParticle* mcParticle =
dynamic_cast<AliAODMCParticle*
>(
fTruthParticleArray->At(i));
1053 if(!mcParticle)
continue;
1055 if (mcParticle->GetLabel() == particle->GetLabel())
1058 if(TMath::Abs(mcParticle->PdgCode()) == 2212)
1060 else if (TMath::Abs(mcParticle->PdgCode()) == 211)
1062 else if (TMath::Abs(mcParticle->PdgCode()) == 321)
1064 else if (TMath::Abs(mcParticle->PdgCode()) == 11)
1066 else if (TMath::Abs(mcParticle->PdgCode()) == 13)
1068 else if (TMath::Abs(mcParticle->PdgCode()) == 700201)
1070 else if (TMath::Abs(mcParticle->PdgCode()) == 700301)
1072 else if (TMath::Abs(mcParticle->PdgCode()) == 700302)
1074 else if (TMath::Abs(mcParticle->PdgCode()) == 700202)
1102 if (track->Phi() > (TMath::TwoPi() - (radius-phi)))
1103 trackPhi = track->Phi() - TMath::TwoPi();
1104 else if (track->Phi() < (phi+radius - TMath::TwoPi()))
1105 trackPhi = track->Phi() + TMath::TwoPi();
1107 trackPhi = track->Phi();
1109 if ( TMath::Abs(trackPhi-phi)*TMath::Abs(trackPhi-phi) + TMath::Abs(track->Eta()-eta)*TMath::Abs(track->Eta()-eta) <= radius*radius)
1121 AliError(Form(
"Cannot find histogram <%s> ",key)) ;
1134 AliError(Form(
"Cannot find histogram <%s> ",key));
1138 if (tmpHist->IsA()->GetBaseClass(
"TH1"))
1139 static_cast<TH1*>(tmpHist)->Fill(x,y);
1140 else if (tmpHist->IsA()->GetBaseClass(
"TH2"))
1141 static_cast<TH2*>(tmpHist)->Fill(x,y);
1150 AliError(Form(
"Cannot find histogram <%s> ",key));
1154 tmpHist->Fill(x,y,add);
1163 AliError(Form(
"Cannot find histogram <%s> ",key));
1168 tmpHist->Fill(x,y,z,add);
1170 tmpHist->Fill(x,y,z);
1177 T* tmpHist =
new T(name, title, xBins, xMin, xMax);
1179 tmpHist->GetXaxis()->SetTitle(xTitle);
1180 tmpHist->GetYaxis()->SetTitle(yTitle);
1181 tmpHist->SetOption(options);
1182 tmpHist->SetMarkerStyle(kFullCircle);
1191 template <
class T>
T*
AliAnalysisTaskJetExtractor::AddHistogram2D(
const char* name,
const char*
title,
const char* options,
Int_t xBins,
Double_t xMin,
Double_t xMax,
Int_t yBins,
Double_t yMin,
Double_t yMax,
const char* xTitle,
const char* yTitle,
const char* zTitle)
1193 T* tmpHist =
new T(name, title, xBins, xMin, xMax, yBins, yMin, yMax);
1194 tmpHist->GetXaxis()->SetTitle(xTitle);
1195 tmpHist->GetYaxis()->SetTitle(yTitle);
1196 tmpHist->GetZaxis()->SetTitle(zTitle);
1197 tmpHist->SetOption(options);
1198 tmpHist->SetMarkerStyle(kFullCircle);
1207 template <
class T>
T*
AliAnalysisTaskJetExtractor::AddHistogram3D(
const char* name,
const char*
title,
const char* options,
Int_t xBins,
Double_t xMin,
Double_t xMax,
Int_t yBins,
Double_t yMin,
Double_t yMax,
Int_t zBins,
Double_t zMin,
Double_t zMax,
const char* xTitle,
const char* yTitle,
const char* zTitle)
1209 T* tmpHist =
new T(name, title, xBins, xMin, xMax, yBins, yMin, yMax, zBins, zMin, zMax);
1210 tmpHist->GetXaxis()->SetTitle(xTitle);
1211 tmpHist->GetYaxis()->SetTitle(yTitle);
1212 tmpHist->GetZaxis()->SetTitle(zTitle);
1213 tmpHist->SetOption(options);
1214 tmpHist->SetMarkerStyle(kFullCircle);
Bool_t fSaveConstituentsIP
save arrays of constituent impact parameters
Bool_t fSaveSecondaryVertices
save reconstructed sec. vertex properties
Bool_t GetSaveConstituentPID()
void AddFlavourTag(Int_t tag)
void SetSaveConstituents(Bool_t val)
Double_t GetRhoVal() const
Int_t fBuffer_NumTriggerTracks
Double_t GetJetEtaMin() const
Float_t GetPartonEta6() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Float_t GetPartonEta7() const
TTree * fJetTree
! tree structure
Bool_t GetSaveConstituentsIP()
Float_t fBuffer_Event_BackgroundDensity
! array buffer
std::vector< Float_t > GetExtractionPercentages()
Bool_t fSaveMCInformation
save MC information
Container with name, TClonesArray and cuts for particles.
Double_t GetJetEtaMax() const
Float_t GetPartonPhi7() const
std::vector< Float_t > GetExtractionPercentagePtBins()
Bool_t fSaveEventProperties
save general event properties (bgrd. etc.)
Bool_t fSaveJetShapes
save jet shapes
Bool_t fSaveConstituentPID
save arrays of constituent PID parameters
Int_t GetPartonFlag7() const
std::vector< Int_t > fExtractionJetTypes_HM
Jet-types that will be extracted with this tree (hadron matching)
Float_t GetPartonPhi6() const
Int_t TrackAt(Int_t idx) const
UShort_t GetNumberOfTracks() const
UShort_t T(UShort_t m, UShort_t t)
Float_t * fBuffer_Const_Phi
! array buffer
Int_t GetPartonFlag6() const
Float_t fBuffer_Jet_MC_MatchedPt
! array buffer
Bool_t fSaveTriggerTracks
save event trigger track
AliParticleContainer * GetParticleContainer() const
std::vector< Float_t > fExtractionPercentages
Percentages which will be extracted for a given pT bin.
Int_t fBuffer_Jet_MC_MotherParton
! array buffer
Float_t fBuffer_Event_PtHard
! array buffer
Int_t fBuffer_NumSecVertices
void SetSaveJetShapes(Bool_t val)
Float_t * fBuffer_Const_Charge
! array buffer
Float_t fBuffer_JetPhi
! array buffer
Bool_t GetSaveSecondaryVertices()
Float_t fBuffer_JetArea
! array buffer
std::vector< Int_t > fExtractionJetTypes_PM
Jet-types that will be extracted with this tree (parton matching)
std::vector< Float_t > fExtractionPercentagePtBins
pT-bins associated with fExtractionPercentages
Double_t fCent
!event centrality
Long64_t fBuffer_Event_ID
! array buffer
Float_t fBuffer_Event_Centrality
! array buffer
Int_t fBuffer_Jet_MC_MotherIC
! array buffer
Float_t * fBuffer_Const_ProdVtx_X
! array buffer
Bool_t fInitialized
init state of tree
AliEmcalJet * GetNextAcceptJet()
void SetSaveEventProperties(Bool_t val)
Float_t fPtHard
!event -hard
Bool_t AddJetToTree(AliEmcalJet *jet, Float_t bgrdDensity=0, Float_t vertexX=0, Float_t vertexY=0, Float_t vertexZ=0, Float_t centrality=0, Long64_t eventID=0, Float_t magField=0, AliTrackContainer *trackCont=0, Int_t motherParton=0, Int_t motherHadron=0, Int_t partonInitialCollision=0, Float_t matchedPt=0, Float_t truePtFraction=0, Float_t ptHard=0, std::vector< Float_t > &trackPID_ITS=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &trackPID_TPC=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &trackPID_TOF=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &trackPID_TRD=DEFAULT_VECTOR_FLOAT, std::vector< Short_t > &trackPID_Reco=DEFAULT_VECTOR_SHORT, std::vector< Short_t > &trackPID_Truth=DEFAULT_VECTOR_SHORT, std::vector< Float_t > &triggerTrackPt=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &triggerTrackDeltaEta=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &triggerTrackDeltaPhi=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &trackIP_d0=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &trackIP_z0=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &trackIP_d0cov=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &trackIP_z0cov=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_X=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_Y=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_Z=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_Mass=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_Lxy=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_SigmaLxy=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_Chi2=DEFAULT_VECTOR_FLOAT, std::vector< Float_t > &secVtx_Dispersion=DEFAULT_VECTOR_FLOAT)
Float_t GetJetRadius() const
AliEmcalList * fOutput
!output list
Float_t fBuffer_JetPt
! array buffer
Float_t fBuffer_Event_Vertex_Y
! array buffer
Float_t * fBuffer_Const_ProdVtx_Y
! array buffer
Bool_t fSaveConstituents
save arrays of constituent basic properties
Store some informaion about a Pythia eventThis class is used to store some information about a Pythia...
void SetMakeGeneralHistograms(Bool_t g)
Base task in the EMCAL jet framework.
Float_t * fBuffer_Const_Pt
! array buffer
Represent a jet reconstructed using the EMCal jet framework.
const AliEmcalPythiaInfo * GetPythiaInfo() const
Bool_t PxPyPz(Double_t p[3]) const
Float_t * fBuffer_Const_Eta
! array buffer
Float_t fBuffer_JetEta
! array buffer
Declaration of class AliEmcalPythiaInfo.
Int_t fBuffer_NumConstituents
! array buffer
void UserCreateOutputObjects()
Main initialization function on the worker.
Float_t fBuffer_Event_Vertex_X
! array buffer
virtual AliVParticle * GetNextAcceptParticle()
Bool_t GetSaveMCInformation()
Int_t GetNAcceptedParticles() const
Int_t fBuffer_Jet_MC_MotherHadron
! array buffer
Float_t fBuffer_Shape_Mass
! array buffer
Float_t * fBuffer_Const_ProdVtx_Z
! array buffer
Float_t fBuffer_Jet_MC_TruePtFraction
! array buffer
Class managing creation of a tree containing jets.
TList * OpenFile(const char *fname)
Float_t fBuffer_Event_Vertex_Z
! array buffer
void SetSaveTriggerTracks(Bool_t val)
Float_t fBuffer_Event_MagneticField
! array buffer