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 Bool_t oldStatus = TH1::AddDirectoryStatus();
121 TH1::AddDirectory(kFALSE);
123 const Int_t nBinsPt = 200;
124 const Double_t minPt = -50.;
125 const Double_t maxPt = 150.;
128 Double_t minM = -20.;
138 Double_t minDM = -25.;
139 Double_t maxDM = 25.;
145 Int_t nBinsDpT = 100;
146 Double_t minDpT = -50.;
147 Double_t maxDpT = 50.;
149 const Int_t nBinsDRToLJ = 20;
150 const Double_t minDRToLJ = 0.;
151 const Double_t maxDRToLJ = 1.;
153 const Int_t nBinsPtLead = 20;
154 const Double_t minPtLead = 0.;
155 const Double_t maxPtLead = 20.;
157 const Int_t nBinsV1 = 60;
158 const Double_t minV1 = -60.;
159 const Double_t maxV1 = 0.;
161 const Int_t nBinsV2 = 60;
162 const Double_t minV2 = -30.;
163 const Double_t maxV2 = 0.;
165 const Int_t nBinsdMr = 200;
166 const Double_t mindMr = -2.;
167 const Double_t maxdMr = 2.;
168 Double_t *binsdMr =
new Double_t[nBinsdMr+1];
169 for(Int_t i=0; i<=nBinsdMr; i++) binsdMr[i]=(Double_t)mindMr + (maxdMr-mindMr)/nBinsdMr*(Double_t)i ;
173 Double_t minRho = 0.;
174 Double_t maxRho = 20.;
175 Int_t nBinsRhom = 50;
176 Double_t minRhom = 0.;
177 Double_t maxRhom = 1.;
180 const Int_t nBinsSparse2 = 8;
182 const Int_t nBins2[nBinsSparse2] = {nBinsDM, nBinsDpT, nBinsM, nBinsM, nBinsPt, nBinsPt, nBinsRho, nBinsRhom};
183 const Double_t xmin2[nBinsSparse2] = {minDM, minDpT, minM, minM, minPt, minPt, minRho, minRhom};
184 const Double_t xmax2[nBinsSparse2] = {maxDM, maxDpT, maxM, maxM, maxPt, maxPt, maxRho, maxRhom};
186 TString histName =
"";
187 TString histTitle =
"";
188 TString varName =
"#it{M}_{jet}";
192 histName = Form(
"fh2MSubPtSubAll_%d",i);
193 histTitle = Form(
"fh2MSubPtSubAll_%d;%s;#it{p}_{T, sub}",i,varName.Data());
195 fh2MSubPtSubAll[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsM,minM,maxM,nBinsPt,minPt,maxPt);
196 fOutput->Add(fh2MSubPtSubAll[i]);
199 histName = Form(
"fh2PtTrueSubFacV1_%d",i);
200 histTitle = Form(
"fh2PtTrueSubFacV1_%d;#it{p}_{T,true};-(#rho+#rho_{m})V_{1}",i);
201 fh2PtTrueSubFacV1[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV1,minV1,maxV1);
204 histName = Form(
"fh2PtRawSubFacV1_%d",i);
205 histTitle = Form(
"fh2PtRawSubFacV1_%d;#it{p}_{T,raw};-(#rho+#rho_{m})V_{1}",i);
206 fh2PtRawSubFacV1[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV1,minV1,maxV1);
209 histName = Form(
"fh2PtCorrSubFacV1_%d",i);
210 histTitle = Form(
"fh2PtCorrSubFacV1_%d;#it{p}_{T,corr};-(#rho+#rho_{m})V_{1}",i);
211 fh2PtCorrSubFacV1[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV1,minV1,maxV1);
214 histName = Form(
"fh2NConstSubFacV1_%d",i);
215 histTitle = Form(
"fh2NConstSubFacV1_%d;#it{N}_{const};-(#rho+#rho_{m})V_{1}",i);
216 fh2NConstSubFacV1[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,100,0.,200.);
219 histName = Form(
"fh2PtTrueSubFacV2_%d",i);
220 histTitle = Form(
"fh2PtTrueSubFacV2_%d;#it{p}_{T,true};0.5(#rho+#rho_{m})^{2}V_{2}",i);
221 fh2PtTrueSubFacV2[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV2,minV2,maxV2);
224 histName = Form(
"fh2PtRawSubFacV2_%d",i);
225 histTitle = Form(
"fh2PtRawSubFacV2_%d;#it{p}_{T,raw};0.5(#rho+#rho_{m})^{2}V_{2}",i);
226 fh2PtRawSubFacV2[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV2,minV2,maxV2);
229 histName = Form(
"fh2PtCorrSubFacV2_%d",i);
230 histTitle = Form(
"fh2PtCorrSubFacV2_%d;#it{p}_{T,corr};0.5(#rho+#rho_{m})^{2}V_{2}",i);
231 fh2PtCorrSubFacV2[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsV2,minV2,maxV2);
234 histName = Form(
"fh2NConstSubFacV2_%d",i);
235 histTitle = Form(
"fh2NConstSubFacV2_%d;#it{N}_{const};0.5(#rho+#rho_{m})^{2}V_{2}",i);
236 fh2NConstSubFacV2[i] =
new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,100,0.,200.);
258 AliVParticle *vpe = NULL;
286 AliError(Form(
"%s: Could not retrieve rho %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoName().Data()));
288 }
else fRho = rhoParam->GetVal();
293 AliError(Form(
"%s: Could not retrieve rho_m %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoMassName().Data()));
295 }
else fRhoM = rhomParam->GetVal();
302 jetCont->ResetCurrentID();
317 Double_t mUnsubjet1 = jet1->
M();
318 Double_t ptjet1 = jet1->
Pt()-
fRho*jet1->
Area();
319 Double_t ptUnsubjet1 = jet1->
Pt();
320 Double_t var = mjet1;
324 if(ptjet1>0. || ptjet1<0.) var = mjet1/ptjet1;
338 Double_t fraction = 0.;
340 fJet2Vec->SetPtEtaPhiM(0.,0.,0.,0.);
350 Double_t ncoll = 6.88;
356 if(rnd.Rndm()<=prob) reject = kTRUE;
361 jetContO->ResetCurrentID();
373 Double_t deltaR = jetO->
DeltaR(vpe);
383 fJet2Vec->SetPxPyPzE(vpe->Px(),vpe->Py(),vpe->Pz(),vpe->E());
411 Double_t drToLJ = -1.;
412 if(jetL) drToLJ = jet1->
DeltaR(jetL);
414 drToLJ = jet1->
DeltaR(vpe);
418 Double_t ptJetR = 0.;
431 ptJetR =
fVecP->Pt();
441 if(ptJetR>0. || ptJetR<0.) var2 /= ptJetR;
452 Double_t varsp[7] = {var,var2,ptjet1,ptJetR,jet1->
MaxTrackPt()};
456 varsp1[0] = var-var2;
457 varsp1[1] = ptjet1-ptJetR;
466 Double_t varsp2[8] = {var-var2, ptjet1-ptJetR, var2, mUnsubjet1, ptjet1, ptUnsubjet1,
fRho,
fRhoM};
TH3F ** fh3PtTrueDeltaMLeadPt
! true jet pT vs (Msub - Mtrue) vs LeadPt for matched jets
TH1D * fRhoFactorQA
! actual rho weighting factors used
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
Double_t GetRhoFactor(Double_t ptdet, Double_t rhoCurrent)
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
THnSparse ** fhnDeltaMass
! deltaM vs deltapT
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
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