6 #include <TClonesArray.h> 10 #include <THnSparse.h> 13 #include <TLorentzVector.h> 19 #include <AliAnalysisDataSlot.h> 20 #include <AliAnalysisDataContainer.h> 22 #include "TMatrixDSym.h" 23 #include "TMatrixDSymEigen.h" 26 #include "AliVCluster.h" 27 #include "AliVTrack.h" 32 #include "AliMCEvent.h" 33 #include "AliGenPythiaEventHeader.h" 34 #include "AliAODMCHeader.h" 35 #include "AliMCEvent.h" 36 #include "AliAnalysisManager.h" 44 #include "AliAODEvent.h" 56 fMinFractionShared(0),
59 fJetSelection(kInclusive),
65 fangWindowRecoil(0.6),
72 fOneConstSelectOn(kFALSE),
73 fTrackCheckPlots(kFALSE),
74 fCheckResolution(kFALSE),
96 fHCheckResolutionSubjets(0x0),
98 fTreeObservableTagging(0)
101 for(
Int_t i=0;i<8;i++){
103 SetMakeGeneralHistograms(kTRUE);
104 DefineOutput(1, TList::Class());
105 DefineOutput(2, TTree::Class());
112 fMinFractionShared(0),
113 fJetShapeType(
kData),
114 fJetShapeSub(kNoSub),
115 fJetSelection(kInclusive),
116 fPtThreshold(-9999.),
121 fangWindowRecoil(0.6),
125 fCentSelectOn(kTRUE),
128 fOneConstSelectOn(kFALSE),
129 fTrackCheckPlots(kFALSE),
130 fCheckResolution(kFALSE),
137 fMagFieldPolarity(1),
151 fHLundIterative(0x0),
152 fHCheckResolutionSubjets(0x0),
154 fTreeObservableTagging(0)
158 for(
Int_t i=0;i<8;i++){
162 DefineOutput(1, TList::Class());
163 DefineOutput(2, TTree::Class());
179 Bool_t oldStatus = TH1::AddDirectoryStatus();
180 TH1::AddDirectory(kFALSE);
185 fh2ResponseUW=
new TH2F(
"fh2ResponseUW",
"fh2ResponseUW", 100, 0, 200, 100, 0, 200);
187 fh2ResponseW=
new TH2F(
"fh2ResponseW",
"fh2ResponseW", 100, 0, 200, 100, 0, 200);
189 fPhiJetCorr6=
new TH2F(
"fPhiJetCorr6",
"fPhiJetCorr6", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
191 fEtaJetCorr6=
new TH2F(
"fEtaJetCorr6",
"fEtaJetCorr6", 50, -1.5, 1.5, 50, -1.5, 1.5);
194 fPhiJetCorr7=
new TH2F(
"fPhiJetCorr7",
"fPhiJetCorr7", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
196 fEtaJetCorr7=
new TH2F(
"fEtaJetCorr7",
"fEtaJetCorr7", 50, -1.5, 1.5, 50, -1.5, 1.5);
199 fPtJetCorr=
new TH2F(
"fPtJetCorr",
"fPtJetCorr", 100, 0, 200, 100, 0, 200);
201 fPtJet=
new TH1F(
"fPtJet",
"fPtJet", 100, 0, 200);
204 fhpTjetpT=
new TH2F(
"fhpTjetpT",
"fhpTjetpT", 200, 0, 200, 200, 0, 200);
206 fhPt=
new TH1F(
"fhPt",
"fhPt", 200, 0, 200);
208 fhPhi=
new TH1F(
"fhPhi",
"fhPhi", 100, -TMath::Pi(), TMath::Pi());
210 fhTrackPhi=
new TH1F(
"fhTrackPhi",
"fhTrackPhi", 100, 0, 2*TMath::Pi());
216 const Int_t dimSpec = 6;
217 const Int_t nBinsSpec[6] = {50,100,100,20,100,2};
218 const Double_t lowBinSpec[6] = {0.,-10,0,0,0,0};
219 const Double_t hiBinSpec[6] = {5.,10.,100,20,100,2};
221 "LundIterativePlot [log(1/theta),log(z*theta),pTjet,algo]",
222 dimSpec,nBinsSpec,lowBinSpec,hiBinSpec);
227 const Int_t dimResol = 5;
228 const Int_t nBinsResol[5] = {10,10,80,80,80};
229 const Double_t lowBinResol[5] = {0,0,-1,-1,-1};
230 const Double_t hiBinResol[5] = {200,0.3,1,1,1};
232 "Mom.Resolution of Subjets vs opening angle",
233 dimResol,nBinsResol,lowBinResol,hiBinResol);
239 fNbOfConstvspT=
new TH2F(
"fNbOfConstvspT",
"fNbOfConstvspT", 100, 0, 100, 200, 0, 200);
249 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
254 TH1::AddDirectory(oldStatus);
255 const Int_t nVar = 8;
256 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
262 fShapesVarNames[0] =
"partonCode";
263 fShapesVarNames[1] =
"ptJet";
264 fShapesVarNames[2] =
"ktAv";
265 fShapesVarNames[3] =
"thetaAv";
266 fShapesVarNames[4] =
"ptJetMatch";
267 fShapesVarNames[5] =
"ktAvMatch";
268 fShapesVarNames[6] =
"thetaAvMatch";
269 fShapesVarNames[7]=
"weightPythia";
272 for(
Int_t ivar=0; ivar < nVar; ivar++){
273 cout<<
"looping over variables"<<endl;
279 delete [] fShapesVarNames;
302 AliAODTrack *triggerHadron = 0x0;
317 TClonesArray *TrackArray = NULL;
318 TClonesArray *TrackArrayMC = NULL;
320 else TrackArray = PartCont->
GetArray();
324 else NTracks = TrackArray->GetEntriesFast();
334 if (triggerHadronLabel==-99999) {
339 else triggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(triggerHadronLabel));
342 if (!triggerHadron) {
354 fhPt->Fill(triggerHadron->Pt());
361 AliAODTrack *
Track = 0x0;
362 for(
Int_t i=0; i < NTracks; i++){
365 if (!Track)
continue;
366 if(TMath::Abs(Track->Eta())>0.9)
continue;
367 if (Track->Pt()<0.15)
continue;
372 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
373 if (!Track)
continue;
374 if(TMath::Abs(Track->Eta())>0.9)
continue;
375 if (Track->Pt()<0.15)
continue;
387 Float_t rhoVal=0, rhoMassVal = 0.;
395 Printf(
"%s: Could not retrieve rho %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoName().Data());
396 }
else rhoVal = rhoParam->GetVal();
400 Printf(
"%s: Could not retrieve rho_m %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoMassName().Data());
401 }
else rhoMassVal = rhomParam->GetVal();
410 Int_t ifound=0, jfound=0;
411 Int_t ilab=-1, jlab=-1;
441 jetUS = jetContUS->
GetJet(i);
444 if(ifound==1) ilab = i;
447 if(ilab==-1)
continue;
448 jetUS=jetContUS->
GetJet(ilab);
454 Printf(
"jet2 does not exist, returning");
462 Printf(
"jet3 does not exist, returning");
465 cout<<
"jet 3 exists"<<jet3->
Pt()<<endl;
491 jetUS = jetContUS->
GetJet(i);
494 if(ifound==1) ilab = i;
497 if(ilab==-1)
continue;
498 jetUS=jetContUS->
GetJet(ilab);
502 Printf(
"jet2 does not exist, returning");
508 jet3 = jetContPart->
GetJet(j);
512 if(jfound==1) jlab = j;
515 if(jlab==-1)
continue;
516 jet3=jetContPart->
GetJet(jlab);
518 Printf(
"jet3 does not exist, returning");
524 Printf(
"jet3 does not exist, returning");
543 Float_t dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
553 dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
667 AliVParticle *vp1 = 0x0;
672 Printf(
"AliVParticle associated to constituent not found");
677 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
679 num=num+vp1->Pt()*dr;
713 TClonesArray *TracksArray = NULL;
714 TClonesArray *TracksArrayMC = NULL;
717 else TracksArray = PartCont->
GetArray();
720 if(!PartContMC || !TracksArrayMC)
return -2;
723 if(!PartCont || !TracksArray)
return -2;
727 AliAODTrack *
Track = 0x0;
731 else NTracks = TracksArray->GetEntriesFast();
733 for(
Int_t i=0; i < NTracks; i++){
736 if (!Track)
continue;
737 if(TMath::Abs(Track->Eta())>0.9)
continue;
739 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
741 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
745 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
746 if (!Track)
continue;
747 if(TMath::Abs(Track->Eta())>0.9)
continue;
748 if (Track->Pt()<0.15)
continue;
750 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
752 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
772 return Coronna(jet, jetContNb);
788 AliVParticle *vp1 = 0x0;
793 Printf(
"AliVParticle associated to constituent not found");
797 num=num+vp1->Pt()*vp1->Pt();
800 return TMath::Sqrt(num)/den;
810 return PTD(jet, jetContNb);
831 TVector3 ppJ1(pxjet, pyjet, pzjet);
832 TVector3 ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
834 TVector3 ppJ2(-pyjet, pxjet, 0);
836 AliVParticle *vp1 = 0x0;
841 Printf(
"AliVParticle associated to constituent not found");
845 TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
848 TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
849 TVector3 pPerp = pp - pLong;
852 Float_t ppjX = pPerp.Dot(ppJ2);
853 Float_t ppjY = pPerp.Dot(ppJ3);
854 Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
855 if(ppjT<=0)
return 0;
857 mxx += (ppjX * ppjX / ppjT);
858 myy += (ppjY * ppjY / ppjT);
859 mxy += (ppjX * ppjY / ppjT);
864 if(sump2==0)
return 0;
866 Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
867 TMatrixDSym m0(2,ele);
870 TMatrixDSymEigen m(m0);
872 TMatrixD evecm = m.GetEigenVectors();
873 eval = m.GetEigenValues();
877 if (eval[0] < eval[1]) jev = 1;
880 evec0 = TMatrixDColumn(evecm, jev);
883 TVector2 evec(compx, compy);
885 if(jev==1) circ=2*eval[0];
886 if(jev==0) circ=2*eval[1];
917 AliVParticle *vp1 = 0x0;
918 AliVParticle *vp2 = 0x0;
919 std::vector<int> ordindex;
924 if(ordindex.size()<2)
return -1;
928 Printf(
"AliVParticle associated to Leading constituent not found");
934 Printf(
"AliVParticle associated to Subleading constituent not found");
954 return LeSub(jet, jetContNb);
983 AliVParticle *vp1 = 0x0;
988 Printf(
"AliVParticle associated to constituent not found");
996 mxx += ppt*ppt*deta*deta;
997 myy += ppt*ppt*dphi*dphi;
998 mxy -= ppt*ppt*deta*TMath::Abs(dphi);
1004 if(sump2==0)
return 0;
1006 Double_t ele[4] = {mxx , mxy , mxy , myy };
1007 TMatrixDSym m0(2,ele);
1010 TMatrixDSymEigen m(m0);
1012 TMatrixD evecm = m.GetEigenVectors();
1013 eval = m.GetEigenValues();
1017 if (eval[0] < eval[1]) jev = 1;
1020 evec0 = TMatrixDColumn(evecm, jev);
1023 TVector2 evec(compx, compy);
1025 if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
1026 if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
1040 return Sigma2(jet, jetContNb);
1060 TClonesArray *TracksArray = NULL;
1061 TClonesArray *TracksArrayMC = NULL;
1064 else TracksArray = PartCont->
GetArray();
1067 if(!PartContMC || !TracksArrayMC)
return -99999;
1070 if(!PartCont || !TracksArray)
return -99999;
1074 AliAODTrack *
Track = 0x0;
1079 Int_t triggers[100];
1080 for (
Int_t iTrigger=0; iTrigger<100; iTrigger++) triggers[iTrigger] = 0;
1084 else NTracks = TracksArray->GetEntriesFast();
1086 for(
Int_t i=0; i < NTracks; i++){
1089 if (!Track)
continue;
1090 if(TMath::Abs(Track->Eta())>0.9)
continue;
1091 if (Track->Pt()<0.15)
continue;
1092 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1099 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1100 if (!Track)
continue;
1101 if(TMath::Abs(Track->Eta())>0.9)
continue;
1102 if (Track->Pt()<0.15)
continue;
1103 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1112 if (iTT == 0)
return -99999;
1113 Int_t nbRn = 0, index = 0 ;
1115 nbRn = random.Integer(iTT);
1116 index = triggers[nbRn];
1125 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
1126 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
1127 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
1128 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
1129 double dphi = mphi-vphi;
1130 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
1131 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
1139 std::vector<fastjet::PseudoJet> fInputVectors;
1140 fInputVectors.clear();
1141 fastjet::PseudoJet PseudoTracks;
1147 if (!fTrk)
continue;
1149 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1150 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1151 fInputVectors.push_back(PseudoTracks);
1154 fastjet::JetAlgorithm jetalgo(fastjet::cambridge_algorithm);
1158 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1161 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1162 std::vector<fastjet::PseudoJet> fOutputJets;
1163 fOutputJets.clear();
1164 fOutputJets=fClustSeqSA.inclusive_jets(0);
1166 fastjet::PseudoJet jj;
1167 fastjet::PseudoJet j1;
1168 fastjet::PseudoJet j2;
1171 double thetaverage=0;
1173 double flagSubjet=0;
1174 while(jj.has_parents(j1,j2)){
1176 if(j1.perp() < j2.perp())
swap(j1,j2);
1178 double delta_R=j1.delta_R(j2);
1179 double z=j2.perp()/(j1.perp()+j2.perp());
1180 double y =log(1.0/delta_R);
1181 double lnpt_rel=log(j2.perp()*delta_R);
1182 double yh=j1.e()+j2.e();
1183 vector < fastjet::PseudoJet > constitj1 = sorted_by_pt(j1.constituents());
1186 ktaverage=ktaverage+lnpt_rel;
1187 thetaverage=thetaverage+delta_R;
1188 Double_t LundEntries[6] = {y,lnpt_rel,fOutputJets[0].perp(),nall,yh,flagSubjet};
1197 }
catch (fastjet::Error) {
1198 AliError(
" [w] FJ Exception caught.");
1212 std::vector<fastjet::PseudoJet> fInputVectors;
1213 fInputVectors.clear();
1214 fastjet::PseudoJet PseudoTracks;
1220 if (!fTrk)
continue;
1222 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1223 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1224 fInputVectors.push_back(PseudoTracks);
1227 fastjet::JetAlgorithm jetalgo(fastjet::cambridge_algorithm);
1231 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1234 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1235 std::vector<fastjet::PseudoJet> fOutputJets;
1236 fOutputJets.clear();
1237 fOutputJets=fClustSeqSA.inclusive_jets(0);
1239 fastjet::PseudoJet jj;
1240 fastjet::PseudoJet j1;
1241 fastjet::PseudoJet j2;
1244 double thetaverage=0;
1246 double flagSubjet=0;
1247 while(jj.has_parents(j1,j2)){
1249 if(j1.perp() < j2.perp())
swap(j1,j2);
1251 double delta_R=j1.delta_R(j2);
1253 double lnpt_rel=log(j2.perp()*delta_R);
1255 ktaverage=ktaverage+lnpt_rel;
1256 thetaverage=thetaverage+delta_R;
1261 average1=ktaverage/nall;
1262 average2=thetaverage/nall;
1265 }
catch (fastjet::Error) {
1266 AliError(
" [w] FJ Exception caught.");
1281 std::vector<fastjet::PseudoJet> fInputVectors;
1282 fInputVectors.clear();
1283 fastjet::PseudoJet PseudoTracks;
1285 std::vector<fastjet::PseudoJet> fInputVectorsM;
1286 fInputVectorsM.clear();
1287 fastjet::PseudoJet PseudoTracksM;
1294 if (!fTrk)
continue;
1295 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1296 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1297 fInputVectors.push_back(PseudoTracks);
1300 fastjet::JetAlgorithm jetalgo(fastjet::cambridge_algorithm);
1301 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1305 if (!fTrk)
continue;
1306 PseudoTracksM.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1307 PseudoTracksM.set_user_index(fJetM->
TrackAt(i)+100);
1308 fInputVectorsM.push_back(PseudoTracksM);
1311 fastjet::JetAlgorithm jetalgoM(fastjet::cambridge_algorithm);
1312 fastjet::JetDefinition fJetDefM(jetalgoM, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1316 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1317 std::vector<fastjet::PseudoJet> fOutputJets;
1318 fOutputJets.clear();
1319 fOutputJets=fClustSeqSA.inclusive_jets(0);
1321 fastjet::ClusterSequence fClustSeqSAM(fInputVectorsM, fJetDefM);
1322 std::vector<fastjet::PseudoJet> fOutputJetsM;
1323 fOutputJetsM.clear();
1324 fOutputJetsM=fClustSeqSAM.inclusive_jets(0);
1328 fastjet::PseudoJet jj,jjM;
1329 fastjet::PseudoJet j1,j1M;
1330 fastjet::PseudoJet j2,j2M;
1332 jjM=fOutputJetsM[0];
1337 while((jj.has_parents(j1,j2)) && (z1<zcut)){
1338 if(j1.perp() < j2.perp())
swap(j1,j2);
1340 z1=j2.perp()/(j1.perp()+j2.perp());
1346 while((jjM.has_parents(j1M,j2M)) && (z2<zcut)){
1347 if(j1M.perp() < j2M.perp())
swap(j1M,j2M);
1349 z2=j2M.perp()/(j1M.perp()+j2M.perp());
1355 double delta_R1=j1.delta_R(j1M);
1356 double delta_R2=j2.delta_R(j2M);
1357 double delta_R=j1.delta_R(j2);
1358 double residz=(z1-z2)/z2;
1359 double resid1=(j1.perp()-j1M.perp())/j1M.perp();
1360 double resid2=(j2.perp()-j2M.perp())/j2M.perp();
1363 Double_t ResolEntries[5] = {fOutputJets[0].perp(),delta_R,resid1,resid2,residz};
1367 }
catch (fastjet::Error) {
1368 AliError(
" [w] FJ Exception caught.");
1390 if (!fTrk2)
continue;
1391 if(i==index)
continue;
1398 Double_t deta=fTrk2->Eta()-fTrk1->Eta();
1401 if (TMath::Abs(fTrk1->Eta()-fTrk2->Eta()) <
fEtaCutValue*2.5*3){
1408 initdpsinner = TVector2::Phi_mpi_pi(initdpsinner);
1409 initdpsouter = TVector2::Phi_mpi_pi(initdpsouter);
1413 if (TMath::Abs(initdpsinner) < kLimit ||
1414 TMath::Abs(initdpsouter) < kLimit || initdpsinner * initdpsouter < 0 ) {
1419 for (
Double_t rad = 0.8; rad < 2.51; rad += 0.01) {
1421 dps = TVector2::Phi_mpi_pi(dps);
1422 if (TMath::Abs(dps) < TMath::Abs(mindps))
Int_t SelectTrigger(Float_t minpT, Float_t maxpT)
Float_t Coronna(AliEmcalJet *jet, Int_t jetContNb)
JetShapeType fJetShapeType
Double_t GetFirstOrderSubtractedAngularity() const
const TString & GetRhoName() const
Double_t GetSecondOrderSubtractedSigma2() const
Bool_t RetrieveEventObjects()
Retrieve common objects from event.
Float_t GetPartonEta6() const
AliEmcalJet * ClosestJet() const
virtual ~AliAnalysisTaskEmcalQGTagging()
AliJetContainer * GetJetContainer(Int_t i=0) const
Bool_t FillHistograms()
Function filling histograms.
Float_t GetPartonEta7() const
Double_t GetSecondOrderSubtractedConstituent() const
Float_t GetJetMass(AliEmcalJet *jet, Int_t jetContNb)
Float_t GetPythiaEventWeight() const
Float_t fMagFieldPolarity
Container with name, TClonesArray and cuts for particles.
void UserCreateOutputObjects()
THnSparse * fHLundIterative
Float_t GetPartonPhi7() const
Double_t GetSecondOrderSubtractedpTD() const
Bool_t RetrieveEventObjects()
Double_t GetFirstOrderSubtractedLeSub() const
Float_t GetJetAngularity(AliEmcalJet *jet, Int_t jetContNb)
Int_t GetPartonFlag7() const
Container for particles within the EMCAL framework.
Float_t GetPartonPhi6() const
Int_t TrackAt(Int_t idx) const
Double_t GetFirstOrderSubtractedpTD() const
UShort_t GetNumberOfTracks() const
Float_t GetJetCoronna(AliEmcalJet *jet, Int_t jetContNb)
TString kData
Declare data MC or deltaAOD.
Float_t fMinFractionShared
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
const TString & GetRhoMassName() const
Double_t GetSecondOrderSubtractedLeSub() const
Int_t GetPartonFlag6() const
AliParticleContainer * GetParticleContainer() const
Double_t GetFirstOrderSubtractedConstituent() const
Float_t GetJetCircularity(AliEmcalJet *jet, Int_t jetContNb)
Float_t PTD(AliEmcalJet *jet, Int_t jetContNb)
Double_t GetSecondOrderSubtractedAngularity() const
Float_t GetSigma2(AliEmcalJet *jet, Int_t jetContNb)
virtual AliVParticle * GetAcceptParticle(Int_t i=-1) const
Double_t fCent
!event centrality
TClonesArray * GetArray() const
Double_t GetSecondOrderSubtracted() const
AliEmcalJet * GetNextAcceptJet()
Float_t Angularity(AliEmcalJet *jet, Int_t jetContNb)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
Float_t LeSub(AliEmcalJet *jet, Int_t jetContNb)
AliAnalysisTaskEmcalQGTagging()
Double_t GetRhoVal(Int_t i=0) const
Double_t GetFirstOrderSubtractedCircularity() const
AliEmcalList * fOutput
!output list
void RecursiveParentsMCAverage(AliEmcalJet *fJet, Int_t km, Double_t &aver1, Double_t &aver2)
JetSelectionType fJetSelection
Float_t Sigma2(AliEmcalJet *jet, Int_t jetContNb)
Double_t RelativePhi(Double_t mphi, Double_t vphi)
void Terminate(Option_t *option)
Double_t GetSecondOrderSubtractedCircularity() const
Float_t GetJetNumberOfConstituents(AliEmcalJet *jet, Int_t jetContNb)
AliTrackContainer * GetTrackContainer(Int_t i=0) const
void RecursiveParents(AliEmcalJet *fJet, AliJetContainer *fJetCont)
Bool_t CheckClosePartner(Int_t index, AliEmcalJet *fJet, AliVParticle *fTrack, AliParticleContainer *fTrackCont)
Store some informaion about a Pythia eventThis class is used to store some information about a Pythia...
void SetMakeGeneralHistograms(Bool_t g)
Enable general histograms.
virtual AliVTrack * GetAcceptTrack(Int_t i=-1) const
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
const AliEmcalPythiaInfo * GetPythiaInfo() const
Float_t GetJetpTD(AliEmcalJet *jet, Int_t jetContNb)
Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
Declaration of class AliEmcalPythiaInfo.
void UserCreateOutputObjects()
Main initialization function on the worker.
Double_t GetFirstOrderSubtractedSigma2() const
Float_t Circularity(AliEmcalJet *jet, Int_t jetContNb)
AliEmcalJetShapeProperties * GetShapeProperties() const
Float_t GetJetLeSub(AliEmcalJet *jet, Int_t jetContNb)
Float_t GetPartonPt7() const
void ResetCurrentID(Int_t i=-1)
Reset the iterator to a given index.
Double_t GetFirstOrderSubtracted() const
Container for jet within the EMCAL jet framework.
Bool_t Run()
Run function. This is the core function of the analysis and contains the user code. Therefore users have to implement this function.
THnSparse * fHCheckResolutionSubjets
std::vector< int > GetPtSortedTrackConstituentIndexes(TClonesArray *tracks) const
Float_t GetPartonPt6() const
void CheckSubjetResolution(AliEmcalJet *fJet, AliJetContainer *fJetCont, AliEmcalJet *fJetM, AliJetContainer *fJetContM)
AliEmcalJet * GetJet(Int_t i) const
TTree * fTreeObservableTagging