20 #include <THnSparse.h> 23 #include "AliAnalysisManager.h" 36 SetMakeGeneralHistograms(kTRUE);
64 max[dim] = 2*TMath::Pi()*(1 + 1./(nbins[dim]-1));
79 title[dim] =
"A_{jet}";
85 Int_t dim1 = dim, dim2 = dim;
88 title[dim1] =
"p_{T}^{corr}";
96 title[dim1] =
"p_{T}^{MC}";
103 fHistJets1 =
new THnSparseD(
"fHistJets1",
"fHistJets1",dim1,nbins,min,max);
104 for (
Int_t i = 0; i < dim1; i++)
fHistJets1->GetAxis(i)->SetTitle(title[i]);
108 title[dim2] =
"p_{T}^{corr}";
115 fHistJets2 =
new THnSparseD(
"fHistJets2",
"fHistJets2",dim2,nbins,min,max);
116 for (
Int_t i = 0; i < dim2; i++)
fHistJets2->GetAxis(i)->SetTitle(title[i]);
123 title[dim] =
"p_{T,1}";
129 title[dim] =
"p_{T,2}";
135 title[dim] =
"A_{jet,1}";
141 title[dim] =
"A_{jet,2}";
147 title[dim] =
"distance";
154 title[dim] =
"#deltaA_{jet}";
160 title[dim] =
"#deltap_{T}";
167 title[dim] =
"p_{T,1}^{corr}";
174 title[dim] =
"p_{T,2}^{corr}";
181 title[dim] =
"#deltap_{T}^{corr}";
188 title[dim] =
"#delta#eta";
194 title[dim] =
"#delta#phi";
196 min[dim] = -TMath::Pi()/2;
197 max[dim] = TMath::Pi()*3/2;
201 title[dim] =
"p_{T,1}^{MC}";
208 title[dim] =
"#deltap_{T}^{MC}";
217 title[dim] =
"Z_{g,1}";
222 title[dim] =
"Z_{g,2}";
230 title[dim] =
"Z2_{g,1}";
235 title[dim] =
"Z2_{g,2}";
243 title[dim] =
"R_{g,1}";
248 title[dim] =
"R_{g,2}";
256 title[dim] =
"p_{T,g,1}";
261 title[dim] =
"p_{T,g,2}";
269 title[dim] =
"DBC_{1}";
274 title[dim] =
"DBC_{2}";
281 title[dim] =
"nsdsteps_{jet,1}";
287 title[dim] =
"nsdsteps_{jet,2}";
293 title[dim] =
"nhsplits_{jet,1}";
299 title[dim] =
"nhsplits_{jet,2}";
305 title[dim] =
"Z^{2}_{g,1}";
311 title[dim] =
"Z^{2}_{g,2}";
317 title[dim] =
"R^{2}_{g,1}";
323 title[dim] =
"R^{2}_{g,2}";
329 fHistMatching =
new THnSparseD(
"fHistMatching",
"fHistMatching",dim,nbins,min,max);
344 if (!jets1 || !jets1->GetArray() || !jets2 || !jets2->GetArray())
return kFALSE;
349 jets2->ResetCurrentID();
352 AliDebug(2,Form(
"Processing jet (2) %d", jets2->GetCurrentID()));
356 UInt_t rejectionReason = 0;
357 if (jets2->
AcceptJet(jet2, rejectionReason))
366 if (!jets1->
AcceptJet(jet1, rejectionReason))
continue;
371 if (jets2->GetIsParticleLevel() && !jets1->GetIsParticleLevel())
373 else if (jets1->GetIsParticleLevel() == jets2->GetIsParticleLevel())
388 jets1->ResetCurrentID();
390 UInt_t rejectionReason = 0;
391 if (!jets1->
AcceptJet(jet1, rejectionReason)) {
396 AliDebug(2,Form(
"Processing jet (1) %d", jets1->GetCurrentID()));
419 Int_t nsdsteps_jet1 = 0;
424 if (nhsplits_jet1 > 1) {
431 Int_t nsdsteps_jet2 = 0;
436 if (nhsplits_jet2 > 1) {
446 if (
title==
"p_{T,1}")
447 contents[i] = jet1->
Pt();
448 else if (
title==
"p_{T,2}")
449 contents[i] = jet2->
Pt();
450 else if (
title==
"A_{jet,1}")
451 contents[i] = jet1->
Area();
452 else if (
title==
"A_{jet,2}")
453 contents[i] = jet2->
Area();
454 else if (
title==
"distance")
456 else if (
title==
"#deltaA_{jet}")
457 contents[i] = jet1->
Area()-jet2->
Area();
458 else if (
title==
"#deltap_{T}")
459 contents[i] = jet1->
Pt()-jet2->
Pt();
460 else if (
title==
"#delta#eta")
461 contents[i] = jet1->
Eta()-jet2->
Eta();
462 else if (
title==
"#delta#phi")
463 contents[i] = jet1->
Phi()-jet2->
Phi();
464 else if (
title==
"p_{T,1}^{corr}")
465 contents[i] = corrpt1;
466 else if (
title==
"p_{T,2}^{corr}")
467 contents[i] = corrpt2;
468 else if (
title==
"#deltap_{T}^{corr}")
469 contents[i] = corrpt1-corrpt2;
470 else if (
title==
"p_{T,1}^{MC}")
471 contents[i] = jet1->
MCPt();
472 else if (
title==
"#deltap_{T}^{MC}")
473 contents[i] = jet1->
MCPt()-jet2->
Pt();
474 else if (
title==
"Z_{g,1}")
476 else if (
title==
"Z_{g,2}")
478 else if (
title==
"Z2_{g,1}")
480 else if (
title==
"Z2_{g,2}")
482 else if (
title==
"R_{g,1}")
484 else if (
title==
"R_{g,2}")
486 else if (
title==
"p_{T,g,1}")
488 else if (
title==
"p_{T,g,2}")
490 else if (
title==
"DBC_{1}")
492 else if (
title==
"DBC_{2}")
494 else if (
title==
"nsdsteps_{jet,1}")
495 contents[i] = nsdsteps_jet1;
496 else if (
title==
"nsdsteps_{jet,2}")
497 contents[i] = nsdsteps_jet2;
498 else if (
title==
"nhsplits_{jet,1}")
499 contents[i] = nhsplits_jet1;
500 else if (
title==
"nhsplits_{jet,2}")
501 contents[i] = nhsplits_jet2;
502 else if (
title==
"Z^{2}_{g,1}")
504 else if (
title==
"Z^{2}_{g,2}")
506 else if (
title==
"R^{2}_{g,1}")
508 else if (
title==
"R^{2}_{g,2}")
511 AliWarning(Form(
"Unable to fill dimension %s!",
title.Data()));
523 const char *ntracks1,
524 const char *nclusters1,
528 const char *ntracks2,
529 const char *nclusters2,
536 const Int_t biasType,
541 const Int_t ptHardBin,
544 const char *taskname,
545 const Bool_t biggerMatrix,
554 ::Error(
"AddTaskJetResponseMaker",
"No analysis manager to connect to.");
560 if (!mgr->GetInputEventHandler())
562 ::Error(
"AddTaskJetResponseMaker",
"This task requires an input event handler");
570 TString name(Form(
"%s_%s_%s_Bias%d_BiasType%d_%s",taskname,njets1,njets2,(
Int_t)floor(jetBias),biasType,cutType));
572 if (minCent != -999 && maxCent != -999)
573 name += Form(
"_Cent%d_%d", (
Int_t)floor(minCent), (
Int_t)floor(maxCent));
575 if (ptHardBin != -999)
576 name += Form(
"_PtHard%d", ptHardBin);
595 jetCont1->SetIsParticleLevel(kFALSE);
610 jetCont2->SetIsParticleLevel(kTRUE);
615 jetTask->
SetMatching(matching, maxDistance1, maxDistance2);
627 mgr->AddTask(jetTask);
630 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
632 contname +=
"_histos";
633 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
634 TList::Class(),AliAnalysisManager::kOutputContainer,
635 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
636 mgr->ConnectInput (jetTask, 0, cinput1 );
637 mgr->ConnectOutput (jetTask, 1, coutput1 );
644 fastjet::PseudoJet jet1;
645 fastjet::PseudoJet jet2;
647 if ( jet.has_parents(jet1, jet2) ) {
654 Float_t dr = TMath::Sqrt( jet1.plain_distance(jet2) );
657 if (pt1 < pt2) z = pt1/(pt1+pt2);
658 else z = pt2/(pt1+pt2);
676 std::vector<fastjet::PseudoJet> particles;
678 for (
int j = 0; j < ntracks; j++) {
679 particles.push_back( fastjet::PseudoJet( jet->
Track(j)->Px(), jet->
Track(j)->Py(), jet->
Track(j)->Pz(), jet->
Track(j)->E() ) );
681 fastjet::JetDefinition jet_def(fastjet::cambridge_algorithm, 0.4, fastjet::E_scheme);
682 return (
new fastjet::ClusterSequence(particles, jet_def) );
690 fastjet::ClusterSequence* cs =
Recluster(jet);
692 std::vector<fastjet::PseudoJet> jetrecl = sorted_by_pt( cs->inclusive_jets() );
693 if (jetrecl.size() > 0)
Decluster( jetrecl[0] );
708 if (!jets1 || !jets2)
return;
736 if (embeddingHelper) {
void SetCentRange(Double_t min, Double_t max)
TH2 * fHistRejectionReason1
whether the jet2 collection has to be average subtracted
void SetParticlePtCut(Double_t cut)
Bool_t FillHistograms()
Function filling histograms.
Double_t GetRhoVal() const
const TString & GetRhoName() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Double_t ClosestJetDistance() const
void SetLeadingHadronType(Int_t t)
void FillJetHisto(AliEmcalJet *jet, Int_t Set)
void SetPtBiasJetTrack(Float_t b)
AliEmcalEmbeddingQA fEmbeddingQA
! Embedding QA hists (will only be added if embedding)
AliEmcalJet * MatchedJet() const
std::vector< Int_t > fSDsteps_values
!
void GetSameCollectionsMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const
std::vector< Float_t > fRg_values
! n_SD ordering
Int_t fDeltaEtaDeltaPhiAxis
Declaration of class AliAnalysisTaskEmcalEmbeddingHelper.
AliVParticle * Track(Int_t idx) const
virtual Bool_t AcceptJet(Int_t i, UInt_t &rejectionReason) const
AliJetContainer * AddJetContainer(const char *n, TString defaultCutType, Float_t jetRadius=0.4)
void UserCreateOutputObjects()
THnSparse * fHistMatching
jet2 THnSparse
void SetPercAreaCut(Float_t p)
void SetVzRange(Double_t min, Double_t max)
void SetPtBiasJetClus(Float_t b)
AliClusterContainer * AddClusterContainer(const char *n)
Create new cluster container and attach it to the task.
Container for particles within the EMCAL framework.
void SetIsPythia(Bool_t i)
Bool_t fIsEmbedded
trigger, embedded signal
UShort_t GetNumberOfTracks() const
Bool_t fIsJet2Rho
whether the jet1 collection has to be average subtracted
bool AddQAPlotsToList(TList *list)
void SetRhoName(const char *n)
void SetJetPtCut(Float_t cut)
std::vector< Float_t > fZg_values
! n_SD ordering
THnSparse * fHistJets1
Rejection reason vs. jet pt.
UShort_t GetMatchingType() const
void Decluster(const fastjet::PseudoJet &jet)
void SetPtHardBin(Int_t b)
Implementation of task to embed external events.
AliParticleContainer * AddParticleContainer(const char *n)
Create new particle container and attach it to the task.
Double_t GetSoftDropZg() const
Double_t GetSoftDropdR() const
Double_t GetSoftDropPtfrac() const
void SetMatching(MatchingType t, Double_t p1=1, Double_t p2=1)
static AliAnalysisTaskSoftDropResponse * AddTaskSoftDropResponse(const char *ntracks1="Tracks", const char *nclusters1="CaloClusters", const char *njets1="Jets", const char *nrho1="Rho", const Double_t jetradius1=0.4, const char *ntracks2="MCParticles", const char *nclusters2="", const char *njets2="MCJets", const char *nrho2="", const Double_t jetradius2=0.4, const Double_t jetptcut=1, const Double_t jetareacut=0.557, const Double_t jetBias=5, const Int_t biasType=0, const AliAnalysisTaskSoftDropResponse::MatchingType matching=AliAnalysisTaskSoftDropResponse::kGeometrical, const Double_t maxDistance1=0.25, const Double_t maxDistance2=0.25, const char *cutType="TPC", const Int_t ptHardBin=-999, const Double_t minCent=-999, const Double_t maxCent=-999, const char *taskname="AliAnalysisTaskSoftDropResponse", const Bool_t biggerMatrix=kFALSE, AliAnalysisTaskSoftDropResponse *address=0, const Double_t maxTrackPt=100)
Double_t GetJetPtCut() const
TH2 * fHistRejectionReason2
Rejection reason vs. jet pt.
Int_t GetSoftDropDropCount() const
TObjArray fJetCollArray
jet collection array
AliAnalysisTaskSoftDropResponse()
void ConnectParticleContainer(AliParticleContainer *c)
AliEmcalJet * GetNextJet()
AliEmcalList * fOutput
!output list
void SetHistoBins(Int_t nbins, Double_t min, Double_t max)
void GetGeometricalMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d) const
THnSparse * fHistJets2
jet1 THnSparse
void SetMakeGeneralHistograms(Bool_t g)
Represent a jet reconstructed using the EMCal jet framework.
void FillZgRgVectors(const AliEmcalJet *jet)
void SetRejectionReasonLabels(TAxis *axis)
void UserCreateOutputObjects()
Main initialization function on the worker.
AliEmcalJetShapeProperties * GetShapeProperties() const
void ConnectClusterContainer(AliClusterContainer *c)
void SetMaxTrackPt(Float_t b)
Int_t fZ2gAxis
add Z2g axis in matching THnSparse (default=0)
Container structure for EMCAL clusters.
void GetMCLabelMatchingLevel(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t &d1, Double_t &d2) const
void FillMatchingHistos(AliEmcalJet *jet1, AliEmcalJet *jet2, Double_t d, Double_t CE1, Double_t CE2)
fastjet::ClusterSequence * Recluster(const AliEmcalJet *jet)
Container for jet within the EMCAL jet framework.
Int_t fNbins
no. of pt bins
virtual ~AliAnalysisTaskSoftDropResponse()
static const AliAnalysisTaskEmcalEmbeddingHelper * GetInstance()