6 #include <TLorentzVector.h>
26 fh2PtTrueSubFacV1(0x0),
27 fh2PtRawSubFacV1(0x0),
28 fh2PtCorrSubFacV1(0x0),
29 fh2NConstSubFacV1(0x0),
30 fh2PtTrueSubFacV2(0x0),
31 fh2PtRawSubFacV2(0x0),
32 fh2PtCorrSubFacV2(0x0),
33 fh2NConstSubFacV2(0x0)
38 fh2MSubPtSubAll =
new TH2F*[fNcentBins];
39 fh2PtTrueSubFacV1 =
new TH2F*[fNcentBins];
40 fh2PtRawSubFacV1 =
new TH2F*[fNcentBins];
41 fh2PtCorrSubFacV1 =
new TH2F*[fNcentBins];
42 fh2NConstSubFacV1 =
new TH2F*[fNcentBins];
43 fh2PtTrueSubFacV2 =
new TH2F*[fNcentBins];
44 fh2PtRawSubFacV2 =
new TH2F*[fNcentBins];
45 fh2PtCorrSubFacV2 =
new TH2F*[fNcentBins];
46 fh2NConstSubFacV2 =
new TH2F*[fNcentBins];
48 for (
Int_t i = 0; i < fNcentBins; i++) {
49 fh2MSubPtSubAll[i] = 0;
50 fh2PtTrueSubFacV1[i] = 0;
51 fh2PtRawSubFacV1[i] = 0;
52 fh2PtCorrSubFacV1[i] = 0;
53 fh2NConstSubFacV1[i] = 0;
54 fh2PtTrueSubFacV2[i] = 0;
55 fh2PtRawSubFacV2[i] = 0;
56 fh2PtCorrSubFacV2[i] = 0;
57 fh2NConstSubFacV2[i] = 0;
71 fh2PtTrueSubFacV1(0x0),
72 fh2PtRawSubFacV1(0x0),
73 fh2PtCorrSubFacV1(0x0),
74 fh2NConstSubFacV1(0x0),
75 fh2PtTrueSubFacV2(0x0),
76 fh2PtRawSubFacV2(0x0),
77 fh2PtCorrSubFacV2(0x0),
78 fh2NConstSubFacV2(0x0)
120 const Int_t nBinsPt = 200;
142 Int_t nBinsDpT = 100;
146 const Int_t nBinsDRToLJ = 20;
150 const Int_t nBinsPtLead = 20;
154 const Int_t nBinsV1 = 60;
158 const Int_t nBinsV2 = 60;
162 const Int_t nBinsdMr = 200;
166 for(
Int_t i=0; i<=nBinsdMr; i++) binsdMr[i]=(
Double_t)mindMr + (maxdMr-mindMr)/nBinsdMr*(
Double_t)i ;
172 Int_t nBinsRhom = 50;
177 const Int_t nBinsSparse2 = 8;
179 const Int_t nBins2[nBinsSparse2] = {nBinsDM, nBinsDpT, nBinsM, nBinsM, nBinsPt, nBinsPt, nBinsRho, nBinsRhom};
180 const Double_t xmin2[nBinsSparse2] = {minDM, minDpT, minM, minM, minPt, minPt, minRho, minRhom};
181 const Double_t xmax2[nBinsSparse2] = {maxDM, maxDpT, maxM, maxM, maxPt, maxPt, maxRho, maxRhom};
185 TString varName =
"#it{M}_{jet}";
189 histName = Form(
"fh2MSubPtSubAll_%d",i);
190 histTitle = Form(
"fh2MSubPtSubAll_%d;%s;#it{p}_{T, sub}",i,varName.Data());
192 fh2MSubPtSubAll[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsPt,minPt,maxPt);
193 fOutput->Add(fh2MSubPtSubAll[i]);
196 histName = Form(
"fh2PtTrueSubFacV1_%d",i);
197 histTitle = Form(
"fh2PtTrueSubFacV1_%d;#it{p}_{T,true};-(#rho+#rho_{m})V_{1}",i);
198 fh2PtTrueSubFacV1[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV1,minV1,maxV1);
201 histName = Form(
"fh2PtRawSubFacV1_%d",i);
202 histTitle = Form(
"fh2PtRawSubFacV1_%d;#it{p}_{T,raw};-(#rho+#rho_{m})V_{1}",i);
203 fh2PtRawSubFacV1[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV1,minV1,maxV1);
206 histName = Form(
"fh2PtCorrSubFacV1_%d",i);
207 histTitle = Form(
"fh2PtCorrSubFacV1_%d;#it{p}_{T,corr};-(#rho+#rho_{m})V_{1}",i);
208 fh2PtCorrSubFacV1[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV1,minV1,maxV1);
211 histName = Form(
"fh2NConstSubFacV1_%d",i);
212 histTitle = Form(
"fh2NConstSubFacV1_%d;#it{N}_{const};-(#rho+#rho_{m})V_{1}",i);
216 histName = Form(
"fh2PtTrueSubFacV2_%d",i);
217 histTitle = Form(
"fh2PtTrueSubFacV2_%d;#it{p}_{T,true};0.5(#rho+#rho_{m})^{2}V_{2}",i);
218 fh2PtTrueSubFacV2[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV2,minV2,maxV2);
221 histName = Form(
"fh2PtRawSubFacV2_%d",i);
222 histTitle = Form(
"fh2PtRawSubFacV2_%d;#it{p}_{T,raw};0.5(#rho+#rho_{m})^{2}V_{2}",i);
223 fh2PtRawSubFacV2[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV2,minV2,maxV2);
226 histName = Form(
"fh2PtCorrSubFacV2_%d",i);
227 histTitle = Form(
"fh2PtCorrSubFacV2_%d;#it{p}_{T,corr};0.5(#rho+#rho_{m})^{2}V_{2}",i);
228 fh2PtCorrSubFacV2[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV2,minV2,maxV2);
231 histName = Form(
"fh2NConstSubFacV2_%d",i);
232 histTitle = Form(
"fh2NConstSubFacV2_%d;#it{N}_{const};0.5(#rho+#rho_{m})^{2}V_{2}",i);
263 AliVParticle *vpe = NULL;
291 AliError(Form(
"%s: Could not retrieve rho %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoName().Data()));
293 }
else fRho = rhoParam->GetVal();
298 AliError(Form(
"%s: Could not retrieve rho_m %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoMassName().Data()));
300 }
else fRhoM = rhomParam->GetVal();
307 jetCont->ResetCurrentID();
328 if(ptjet1>0. || ptjet1<0.) var = mjet1/ptjet1;
344 fJet2Vec->SetPtEtaPhiM(0.,0.,0.,0.);
360 if(rnd.Rndm()<=prob) reject = kTRUE;
365 jetContO->ResetCurrentID();
387 fJet2Vec->SetPxPyPzE(vpe->Px(),vpe->Py(),vpe->Pz(),vpe->E());
416 if(jetL) drToLJ = jet1->
DeltaR(jetL);
418 drToLJ = jet1->
DeltaR(vpe);
435 ptJetR =
fVecP->Pt();
445 if(ptJetR>0. || ptJetR<0.) var2 /= ptJetR;
461 varsp1[0] = var-var2;
462 varsp1[1] = ptjet1-ptJetR;
471 Double_t varsp2[10] = {var-var2, ptjet1-ptJetR, mUnsubjet1 - var2, ptUnsubjet1 - ptJetR, var2, mUnsubjet1, ptjet1, ptUnsubjet1,
fRho,
fRhoM};
474 Double_t varsp3[6] = {(var-var2)/var2, (ptjet1-ptJetR)/ptJetR, var2, ptJetR,
fRho,
fRhoM};
TH3F ** fh3PtTrueDeltaMLeadPt
! true jet pT vs (Msub - Mtrue) vs LeadPt for matched jets
const TString & GetRhoName() const
AliEmcalJet * GetTaggedJet() const
TH2F ** fh2PtCorrSubFacV2
! subtracted pT vs 0.5(rho+rhom)^2*V2
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Int_t GetTagStatus() const
TH2F ** fh2NConstSubFacV1
! N constituents vs -(rho+rhom)*V1
Bool_t fSmallSyst
flag for the axes ranges in pPb
Int_t GetNParticles() const
Double_t GetSecondDerivative() const
TH2F ** fh2PtCorrSubFacV1
! subtracted pT vs -(rho+rhom)*V1
THnSparse * fhnDeltaMassAndBkgInfo
! DeltaM, DeltapT bkg-unsubtracted M and pT, rho and rhom
TH2F ** fh2PtTrueSubFacV2
! true pT vs 0.5(rho+rhom)^2*V2
Int_t fCentBin
!event centrality bin
TH3F * fhJetSubMatchEtaPhiPt
! eta, phi, pt distribution of jet subtracted and matched
ClassImp(AliAnalysisTaskJetShapeDeriv) AliAnalysisTaskJetShapeDeriv
Float_t fDeriv2nd
2nd derivative
Bool_t fPartialExclusion
randomly esclude areas according to Ncoll
Double_t GetFirstDerivative() const
void UserCreateOutputObjects()
Container for particles within the EMCAL framework.
Float_t fM2nd
2nd order subtracted jet mass
UShort_t GetNumberOfTracks() const
TH3F ** fh3MSubPtTrueLeadPt
! subtracted jet mass vs true jet pT vs LeadPt for matched jets for matched jets
TH2F * fhJetEtaPhiOvl
! eta-phi distribution of the selected signal jets
AliParticleContainer * GetParticleContainer(Int_t i=0) const
const TString & GetRhoMassName() const
Int_t fContainerOverlap
jets (jetO) with a pT cut selection to reject overlapping embedded single track (used only in single ...
AliParticleContainer * GetParticleContainer() const
AliEmcalJet * GetLeadingJet(const char *opt="")
TLorentzVector * fVecD
! vector with detector level jet
TH2F ** fh2NConstSubFacV2
! N constituents vs 0.5(rho+rhom)^2*V2
TH2F ** fh2PtTrueSubFacV1
! true pT vs -(rho+rhom)*V1
Double_t fRadius
Radius that define overlap.
TLorentzVector * fJet1Vec
jet1(AA) vector
virtual ~AliAnalysisTaskJetShapeDeriv()
Int_t MatchEmbeddedConstituentWithParticleLevel()
Int_t fNcentBins
how many centrality bins
Double_t MaxTrackPt() const
virtual AliVParticle * GetAcceptParticle(Int_t i=-1) const
ResponseReference fResponseReference
true axis of response matrix
Double_t GetSecondOrderSubtracted() const
TH2F ** fh2MSubPtSubAll
! subtracted jet mass vs subtracted jet pT
TH3F ** fh3MSubPtRawDRMatch
! subtracted jet mass vs subtracted jet pT vs distance to leading Pb-Pb jet
TH2F ** fh2PtRawSubFacV1
! raw pT vs -(rho+rhom)*V1
AliEmcalJet * GetNextAcceptJet()
Double_t DeltaR(const AliVParticle *part) const
AliAnalysisTaskJetShapeDeriv()
THnSparse ** fhnMassResponse
! Msub vs Mtrue vs PtCorr vs PtTrue vs DR
Double_t fMinFractionShared
only fill histos for jets if shared fraction larger than X
TH1F * fhNJetsSelEv
! number of selected signal jets per event
Bool_t fOverlap
activate the check on overlap between single particle embedded and jetO (jet with a pT of at least 5 ...
TH3F ** fh3MTruePtTrueLeadPt
! true jet mass vs true jet pT vs LeadPt for matched jets for matched jets
JetMassVarType fJetMassVarType
observable to use
TH2F ** fh2MSubMatch
! subtracted jet mass vs match index (0: no match; 1:match)
AliEmcalList * fOutput
!output list
THnSparse * fhnResolution
! Contains mass and pT resolution
Float_t fM1st
1st order subtracted jet mass
Int_t fMatch
1: matched to MC jet; 0: no match
Short_t TrackAt(Int_t idx) const
TTree * fTreeJetBkg
! tree with jet and bkg variables
TH2F ** fh2MSubPtRawAll
! subtracted jet mass vs subtracted jet pT
Represent a jet reconstructed using the EMCal jet framework.
AliVParticle * GetEmbeddedConstituent(AliEmcalJet *jet)
Int_t fNConst
N constituents in jet1.
Background fluctuation studies: dMdpT spectrum for PYTHIA and single track embedding for derivative s...
Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
TH2F * fhRjetTrvspTj
! distance in R between each jetO and embedded single track (those below fRadius are rejected) ...
TH2F ** fh2PtRawSubFacV2
! raw pT vs 0.5(rho+rhom)^2*V2
AliEmcalJetShapeProperties * GetShapeProperties() const
Bool_t fFromTree
Input embedding from tree.
TLorentzVector * fJet2Vec
jet2(probe) vector
TLorentzVector * fVecP
! vector with particle level jet
Bool_t fCreateTree
create output tree
Int_t fContainerNoEmb
subtracted jets from Pb-Pb only events
Float_t fDeriv1st
1st derivative
Bool_t fSingleTrackEmb
single track embedding
void UserCreateOutputObjects()
Background fluctuation studies: dMdpT spectrum for PYTHIA and single track embedding.
Double_t GetFirstOrderSubtracted() const
Container for jet within the EMCAL jet framework.
Int_t fContainerBase
jets to be analyzed
TH3F ** fh3PtTrueDeltaMRelLeadPt
! true jet pT vs (Msub - Mtrue)/Mtrue vs LeadPt for matched jets