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 "AliHFJetsTaggingVertex.h" 61 AliEmcalJetTree::
AliEmcalJetTree() :
TNamed("CustomTree", "CustomTree"), fJetTree(0), fInitialized(0), fSaveEventProperties(0), fSaveConstituents(0), fSaveConstituentsIP(0), fSaveConstituentPID(0), fSaveJetShapes(0), fSaveMCInformation(0), fSaveSecondaryVertices(0), fExtractionPercentages(), fExtractionPercentagePtBins(), fExtractionJetTypes_HM(), fExtractionJetTypes_PM()
74 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), fExtractionPercentages(), fExtractionPercentagePtBins(), fExtractionJetTypes_HM(), fExtractionJetTypes_PM()
98 AliFatal(
"Tree is not initialized.");
109 Bool_t inPtRange = kFALSE;
147 AliVParticle* particle =
static_cast<AliVParticle*
>(jet->
TrackAt(i, trackCont->GetArray()));
148 if(!particle)
continue;
170 fJetTree->SetBranchAddress(
"Jet_Const_CovIPd", trackIP_d0cov);
171 fJetTree->SetBranchAddress(
"Jet_Const_CovIPz", trackIP_z0cov);
172 fJetTree->SetBranchAddress(
"Jet_Const_IPd", trackIP_d0);
173 fJetTree->SetBranchAddress(
"Jet_Const_IPz", trackIP_z0);
178 fJetTree->SetBranchAddress(
"Jet_Const_PID_ITS", trackPID_ITS);
179 fJetTree->SetBranchAddress(
"Jet_Const_PID_TPC", trackPID_TPC);
180 fJetTree->SetBranchAddress(
"Jet_Const_PID_TOF", trackPID_TOF);
181 fJetTree->SetBranchAddress(
"Jet_Const_PID_TRD", trackPID_TRD);
182 fJetTree->SetBranchAddress(
"Jet_Const_PID_Reconstructed", trackPID_Reco);
184 fJetTree->SetBranchAddress(
"Jet_Const_PID_Truth", trackPID_Truth);
191 fJetTree->SetBranchAddress(
"Jet_SecVtx_X", secVtx_X);
192 fJetTree->SetBranchAddress(
"Jet_SecVtx_Y", secVtx_Y);
193 fJetTree->SetBranchAddress(
"Jet_SecVtx_Z", secVtx_Z);
194 fJetTree->SetBranchAddress(
"Jet_SecVtx_Mass", secVtx_Mass);
195 fJetTree->SetBranchAddress(
"Jet_SecVtx_Lxy", secVtx_Lxy);
196 fJetTree->SetBranchAddress(
"Jet_SecVtx_SigmaLxy", secVtx_SigmaLxy);
197 fJetTree->SetBranchAddress(
"Jet_SecVtx_Chi2", secVtx_Chi2);
198 fJetTree->SetBranchAddress(
"Jet_SecVtx_Dispersion", secVtx_Dispersion);
230 AliFatal(
"Tree is already initialized.");
265 fJetTree->Branch(
"Jet_Const_IPd",&dummy,
"Jet_Const_IPd[Jet_NumConstituents]/F");
266 fJetTree->Branch(
"Jet_Const_IPz",&dummy,
"Jet_Const_IPz[Jet_NumConstituents]/F");
267 fJetTree->Branch(
"Jet_Const_CovIPd",&dummy,
"Jet_Const_CovIPd[Jet_NumConstituents]/F");
268 fJetTree->Branch(
"Jet_Const_CovIPz",&dummy,
"Jet_Const_CovIPz[Jet_NumConstituents]/F");
277 fJetTree->Branch(
"Jet_Const_PID_ITS",&dummy,
"Jet_Const_PID_ITS[Jet_NumConstituents]/F");
278 fJetTree->Branch(
"Jet_Const_PID_TPC",&dummy,
"Jet_Const_PID_TPC[Jet_NumConstituents]/F");
279 fJetTree->Branch(
"Jet_Const_PID_TOF",&dummy,
"Jet_Const_PID_TOF[Jet_NumConstituents]/F");
280 fJetTree->Branch(
"Jet_Const_PID_TRD",&dummy,
"Jet_Const_PID_TRD[Jet_NumConstituents]/F");
282 fJetTree->Branch(
"Jet_Const_PID_Reconstructed",&dummy,
"Jet_Const_PID_Reconstructed[Jet_NumConstituents]/S");
284 fJetTree->Branch(
"Jet_Const_PID_Truth",&dummy,
"Jet_Const_PID_Truth[Jet_NumConstituents]/S");
306 fJetTree->Branch(
"Jet_SecVtx_X",&dummy,
"Jet_SecVtx_X[Jet_NumSecVertices]/F");
307 fJetTree->Branch(
"Jet_SecVtx_Y",&dummy,
"Jet_SecVtx_Y[Jet_NumSecVertices]/F");
308 fJetTree->Branch(
"Jet_SecVtx_Z",&dummy,
"Jet_SecVtx_Z[Jet_NumSecVertices]/F");
309 fJetTree->Branch(
"Jet_SecVtx_Mass",&dummy,
"Jet_SecVtx_Mass[Jet_NumSecVertices]/F");
310 fJetTree->Branch(
"Jet_SecVtx_Lxy",&dummy,
"Jet_SecVtx_Lxy[Jet_NumSecVertices]/F");
311 fJetTree->Branch(
"Jet_SecVtx_SigmaLxy",&dummy,
"Jet_SecVtx_SigmaLxy[Jet_NumSecVertices]/F");
312 fJetTree->Branch(
"Jet_SecVtx_Chi2",&dummy,
"Jet_SecVtx_Chi2[Jet_NumSecVertices]/F");
313 fJetTree->Branch(
"Jet_SecVtx_Dispersion",&dummy,
"Jet_SecVtx_Dispersion[Jet_NumSecVertices]/F");
324 fHadronMatchingRadius(0.4),
325 fSecondaryVertexMaxChi2(1e10),
326 fSecondaryVertexMaxDispersion(0.05),
327 fCalculateSecondaryVertices(kTRUE),
329 fSetEmcalJetFlavour(0),
332 fTruthParticleArray(0),
333 fTruthJetsArrayName(
""),
334 fTruthJetsRhoName(
""),
335 fTruthParticleArrayName(
"mcparticles")
342 DefineOutput(2, TTree::Class());
368 DefineOutput(2, TTree::Class());
385 AliFatal(
"Jet input container not found!");
389 AliFatal(
"Particle input container not found attached to jets!");
399 AddHistogram2D<TH2D>(
"hTrackCount",
"Number of tracks in acceptance vs. centrality",
"COLZ", 500, 0., 5000., 100, 0, 100,
"N tracks",
"Centrality",
"dN^{Events}/dN^{Tracks}");
400 AddHistogram2D<TH2D>(
"hBackgroundPt",
"Background p_{T} distribution",
"", 150, 0., 150., 100, 0, 100,
"Background p_{T} (GeV/c)",
"Centrality",
"dN^{Events}/dp_{T}");
402 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}");
403 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}");
404 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}");
405 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");
406 AddHistogram2D<TH2D>(
"hJetArea",
"Jet area",
"COLZ", 200, 0., 2., 100, 0, 100,
"Jet A",
"Centrality",
"dN^{Jets}/dA");
408 AddHistogram2D<TH2D>(
"hDeltaPt",
"#delta p_{T} distribution",
"", 400, -100., 300., 100, 0, 100,
"p_{T, cone} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
410 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}");
411 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");
413 AddHistogram1D<TH1D>(
"hExtractionPercentage",
"Extracted jets p_{T} distribution (background subtracted)",
"COLZ", 400, -100., 300.,
"p_{T, jet} (GeV/c)",
"Extracted percentage");
416 AddHistogram2D<TH2D>(
"hTrackPt",
"Tracks p_{T} distribution",
"", 300, 0., 300., 100, 0, 100,
"p_{T} (GeV/c)",
"Centrality",
"dN^{Tracks}/dp_{T}");
417 AddHistogram2D<TH2D>(
"hTrackPhi",
"Track angular distribution in #phi",
"LEGO2", 180, 0., 2*TMath::Pi(), 100, 0, 100,
"#phi",
"Centrality",
"dN^{Tracks}/(d#phi)");
418 AddHistogram2D<TH2D>(
"hTrackEta",
"Track angular distribution in #eta",
"LEGO2", 100, -2.5, 2.5, 100, 0, 100,
"#eta",
"Centrality",
"dN^{Tracks}/(d#eta)");
419 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");
421 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})");
422 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})");
438 AliFatal(
"VertexerCuts not given but secondary vertex calculation turned on.");
447 for(
Int_t i=0; i<static_cast<Int_t>(extractionPercentages.size()); i++)
449 Double_t percentage = extractionPercentages[i];
450 for(
Int_t pt=static_cast<Int_t>(extractionPtBins[i*2]); pt<static_cast<Int_t>(extractionPtBins[i*2+1]); pt++)
468 const AliVVertex* myVertex = InputEvent()->GetPrimaryVertex();
469 if(!myVertex && MCEvent())
470 myVertex = MCEvent()->GetPrimaryVertex();
473 vtxX = myVertex->GetX();
474 vtxY = myVertex->GetY();
475 vtxZ = myVertex->GetZ();
478 AliVHeader* eventIDHeader = InputEvent()->GetHeader();
480 eventID = eventIDHeader->GetEventIdAsLong();
490 Int_t currentJetType_HM = 0;
491 Int_t currentJetType_PM = 0;
492 Int_t currentJetType_IC = 0;
496 GetJetType(jet, currentJetType_HM, currentJetType_PM, currentJetType_IC);
502 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;
503 std::vector<Float_t> vec_d0; std::vector<Float_t> vec_d0cov; std::vector<Float_t> vec_z0; std::vector<Float_t> vec_z0cov;
506 for(
Int_t i = 0; i < jet->GetNumberOfTracks(); i++)
508 AliVParticle* particle =
static_cast<AliVParticle*
>(jet->TrackAt(i,
fTracksCont->GetArray()));
509 if(!particle)
continue;
514 vecSigITS.push_back(sigITS); vecSigTPC.push_back(sigTPC); vecSigTOF.push_back(sigTOF); vecSigTRD.push_back(sigTRD); vecRecoPID.push_back(recoPID); vecTruePID.push_back(truePID);
520 vec_d0.push_back(d0); vec_d0cov.push_back(d0cov); vec_z0.push_back(z0); vec_z0cov.push_back(z0cov);
525 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;
527 ReconstructSecondaryVertices(myVertex, jet, secVtx_X, secVtx_Y, secVtx_Z, secVtx_Mass, secVtx_Lxy, secVtx_SigmaLxy, secVtx_Chi2, secVtx_Dispersion);
531 currentJetType_PM,currentJetType_HM,currentJetType_IC,matchedJetPt,truePtFraction,
fPtHard,
532 vecSigITS, vecSigTPC, vecSigTOF, vecSigTRD, vecRecoPID, vecTruePID,
533 vec_d0, vec_z0, vec_d0cov, vec_z0cov,
534 secVtx_X, secVtx_Y, secVtx_Z, secVtx_Mass, secVtx_Lxy, secVtx_SigmaLxy, secVtx_Chi2, secVtx_Dispersion);
559 trueRho = rho->GetVal();
561 TClonesArray* truthArray =
static_cast<TClonesArray*
>(InputEvent()->FindListObject(Form(
"%s",
fTruthJetsArrayName.Data())));
567 for(
Int_t i=0; i<truthArray->GetEntries(); i++)
570 if(truthJet->
Pt() < 1.0)
574 Double_t deltaPhi = TMath::Min(TMath::Abs(truthJet->
Phi()-jet->
Phi()),TMath::TwoPi() - TMath::Abs(truthJet->
Phi()-jet->
Phi()));
575 Double_t deltaR = TMath::Sqrt(deltaEta*deltaEta + deltaPhi*deltaPhi);
582 if(deltaR < bestMatchDeltaR)
584 bestMatchDeltaR = deltaR;
585 matchedJetPt = truthJet->
Pt() - truthJet->
Area()* trueRho;
599 AliVParticle* particle =
static_cast<AliVParticle*
>(jet->
TrackAt(iConst,
fTracksCont->GetArray()));
600 if(!particle)
continue;
601 if(particle->Pt() < 1e-6)
continue;
604 if(particle->GetLabel() < 100000)
605 pt_nonMC += particle->Pt();
606 pt_all += particle->Pt();
609 truePtFraction = (pt_nonMC/pt_all);
625 AliAODMCParticle* parton[2];
630 Int_t pdg = TMath::Abs(parton[0]->PdgCode());
643 Int_t pdg = TMath::Abs(parton[1]->PdgCode());
645 else if (
fVtxTagger->IsBMeson(pdg)) typeHM = 5;
650 jet->
AddFlavourTag(static_cast<Int_t>(TMath::Power(2, typeHM)));
665 Double_t delta1Phi = TMath::Min(TMath::Abs(parton1phi-jet->
Phi()),TMath::TwoPi() - TMath::Abs(parton1phi-jet->
Phi()));
666 Double_t delta1R = TMath::Sqrt(delta1Eta*delta1Eta + delta1Phi*delta1Phi);
668 Double_t delta2Phi = TMath::Min(TMath::Abs(parton2phi-jet->
Phi()),TMath::TwoPi() - TMath::Abs(parton2phi-jet->
Phi()));
669 Double_t delta2R = TMath::Sqrt(delta2Eta*delta2Eta + delta2Phi*delta2Phi);
677 if(delta1R < delta2R)
691 Bool_t isDCA=track->PropagateToDCA(vtx,InputEvent()->GetMagneticField(),3.0,d0rphiz,covd0);
703 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)
709 Double_t vtxPos[3] = {primVtx->GetX(), primVtx->GetY(), primVtx->GetZ()};
711 primVtx->GetCovarianceMatrix(covMatrix);
712 AliESDVertex* esdVtx =
new AliESDVertex(vtxPos, covMatrix, primVtx->GetChi2(), primVtx->GetNContributors());
714 TClonesArray* secVertexArr = 0;
715 vctr_pair_dbl_int arrDispersion;
716 arrDispersion.reserve(5);
722 secVertexArr =
new TClonesArray(
"AliAODVertex");
723 Int_t nDauRejCount = 0;
728 InputEvent()->GetMagneticField(),
737 secVertexArr->Clear();
745 secVertexArr =
dynamic_cast<TClonesArray*
>(InputEvent()->FindListObject(
"VerticesHF"));
751 for(
Int_t i=0; i<secVertexArr->GetEntriesFast(); i++)
753 AliAODVertex* secVtx = (AliAODVertex*)(secVertexArr->UncheckedAt(i));
755 if((strcmp(secVtx->GetParent()->ClassName(),
"AliAODRecoDecayHF3Prong")))
759 Double_t effX = secVtx->GetX() - esdVtx->GetX();
760 Double_t effY = secVtx->GetY() - esdVtx->GetY();
765 Double_t dispersion = arrDispersion[i].first;
771 Double_t Lxy = TMath::Sqrt(effX*effX + effY*effY);
773 Double_t signLxy = effX * jetP[0] + effY * jetP[1];
774 if (signLxy < 0.) Lxy *= -1.;
777 AliAODVertex* aodVtx = (AliAODVertex*)(primVtx);
779 sigmaLxy = aodVtx->ErrorDistanceXYToVertex(secVtx);
785 secVtx_X.push_back(secVtx->GetX()); secVtx_Y.push_back(secVtx->GetY()); secVtx_Z.push_back(secVtx->GetZ()); secVtx_Chi2.push_back(secVtx->GetChi2perNDF());
786 secVtx_Dispersion.push_back(dispersion); secVtx_Mass.push_back(mass); secVtx_Lxy.push_back(Lxy); secVtx_SigmaLxy.push_back(sigmaLxy);
791 secVertexArr->Clear();
810 Int_t absPDG = TMath::Abs(part->PdgCode());
811 if ((absPDG > 300 && absPDG < 400) || (absPDG > 3000 && absPDG < 4000))
814 Double_t rsquared = (part->Eta() - jet->
Eta())*(part->Eta() - jet->
Eta()) + (part->Phi() - jet->
Phi())*(part->Phi() - jet->
Phi());
823 else if(MCEvent() && (MCEvent()->Stack()))
825 AliStack*
stack = MCEvent()->Stack();
827 for(
Int_t i=0; i<stack->GetNtrack(); i++)
829 TParticle *part = stack->Particle(i);
833 Int_t absPDG = TMath::Abs(part->GetPdgCode());
834 if ((absPDG > 300 && absPDG < 400) || (absPDG > 3000 && absPDG < 4000))
837 Double_t rsquared = (part->Eta() - jet->
Eta())*(part->Eta() - jet->
Eta()) + (part->Phi() - jet->
Phi())*(part->Phi() - jet->
Phi());
868 AliVParticle* jetConst =
static_cast<AliVParticle*
>(jet->
TrackAt(i,
fTracksCont->GetArray()));
869 if(!jetConst)
continue;
873 Double_t deltaPhi = TMath::Min(TMath::Abs(jet->
Phi() - jetConst->Phi()), TMath::TwoPi() - TMath::Abs(jet->
Phi() - jetConst->Phi()));
874 if(!((jet->
Phi() - jetConst->Phi() < 0) && (jet->
Phi() - jetConst->Phi() <= TMath::Pi())))
875 deltaPhi = -deltaPhi;
882 const Int_t kNumRandomConesPerEvent = 4;
883 for(
Int_t iCone=0; iCone<kNumRandomConesPerEvent; iCone++)
893 tmpRandConePt += track->Pt();
915 if(!particle)
return;
918 AliAODTrack* aodtrack =
dynamic_cast<AliAODTrack*
>(particle);
923 recoPID = aodtrack->GetMostProbablePID();
924 AliAODPid* pidObj = aodtrack->GetDetPid();
928 sigITS = pidObj->GetITSsignal();
929 sigTPC = pidObj->GetTPCsignal();
930 sigTOF = pidObj->GetTOFsignal();
931 sigTRD = pidObj->GetTRDsignal();
939 AliAODMCParticle* mcParticle =
dynamic_cast<AliAODMCParticle*
>(
fTruthParticleArray->At(i));
940 if(!mcParticle)
continue;
942 if (mcParticle->GetLabel() == particle->GetLabel())
945 if(TMath::Abs(mcParticle->PdgCode()) == 2212)
947 else if (TMath::Abs(mcParticle->PdgCode()) == 211)
949 else if (TMath::Abs(mcParticle->PdgCode()) == 321)
951 else if (TMath::Abs(mcParticle->PdgCode()) == 11)
953 else if (TMath::Abs(mcParticle->PdgCode()) == 13)
955 else if (TMath::Abs(mcParticle->PdgCode()) == 700201)
957 else if (TMath::Abs(mcParticle->PdgCode()) == 700301)
959 else if (TMath::Abs(mcParticle->PdgCode()) == 700302)
961 else if (TMath::Abs(mcParticle->PdgCode()) == 700202)
982 if (track->Phi() > (TMath::TwoPi() - (radius-phi)))
983 trackPhi = track->Phi() - TMath::TwoPi();
984 else if (track->Phi() < (phi+radius - TMath::TwoPi()))
985 trackPhi = track->Phi() + TMath::TwoPi();
987 trackPhi = track->Phi();
989 if ( TMath::Abs(trackPhi-phi)*TMath::Abs(trackPhi-phi) + TMath::Abs(track->Eta()-eta)*TMath::Abs(track->Eta()-eta) <= radius*radius)
1001 AliError(Form(
"Cannot find histogram <%s> ",key)) ;
1014 AliError(Form(
"Cannot find histogram <%s> ",key));
1018 if (tmpHist->IsA()->GetBaseClass(
"TH1"))
1019 static_cast<TH1*>(tmpHist)->Fill(x,y);
1020 else if (tmpHist->IsA()->GetBaseClass(
"TH2"))
1021 static_cast<TH2*>(tmpHist)->Fill(x,y);
1030 AliError(Form(
"Cannot find histogram <%s> ",key));
1034 tmpHist->Fill(x,y,add);
1043 AliError(Form(
"Cannot find histogram <%s> ",key));
1048 tmpHist->Fill(x,y,z,add);
1050 tmpHist->Fill(x,y,z);
1057 T* tmpHist =
new T(name, title, xBins, xMin, xMax);
1059 tmpHist->GetXaxis()->SetTitle(xTitle);
1060 tmpHist->GetYaxis()->SetTitle(yTitle);
1061 tmpHist->SetOption(options);
1062 tmpHist->SetMarkerStyle(kFullCircle);
1071 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)
1073 T* tmpHist =
new T(name, title, xBins, xMin, xMax, yBins, yMin, yMax);
1074 tmpHist->GetXaxis()->SetTitle(xTitle);
1075 tmpHist->GetYaxis()->SetTitle(yTitle);
1076 tmpHist->GetZaxis()->SetTitle(zTitle);
1077 tmpHist->SetOption(options);
1078 tmpHist->SetMarkerStyle(kFullCircle);
1087 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)
1089 T* tmpHist =
new T(name, title, xBins, xMin, xMax, yBins, yMin, yMax, zBins, zMin, zMax);
1090 tmpHist->GetXaxis()->SetTitle(xTitle);
1091 tmpHist->GetYaxis()->SetTitle(yTitle);
1092 tmpHist->GetZaxis()->SetTitle(zTitle);
1093 tmpHist->SetOption(options);
1094 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
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
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
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 > &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)
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
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
Float_t fBuffer_Event_MagneticField
! array buffer