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),
79 fDoAreaIterative(kTRUE),
97 fHCheckResolutionSubjets(0x0),
99 fTreeObservableTagging(0)
102 for(
Int_t i=0;i<12;i++){
104 SetMakeGeneralHistograms(kTRUE);
105 DefineOutput(1, TList::Class());
106 DefineOutput(2, TTree::Class());
113 fMinFractionShared(0),
114 fJetShapeType(
kData),
115 fJetShapeSub(kNoSub),
116 fJetSelection(kInclusive),
117 fPtThreshold(-9999.),
122 fangWindowRecoil(0.6),
126 fCentSelectOn(kTRUE),
129 fOneConstSelectOn(kFALSE),
130 fTrackCheckPlots(kFALSE),
131 fCheckResolution(kFALSE),
136 fDoAreaIterative(kTRUE),
139 fMagFieldPolarity(1),
153 fHLundIterative(0x0),
154 fHCheckResolutionSubjets(0x0),
156 fTreeObservableTagging(0)
160 for(
Int_t i=0;i<12;i++){
164 DefineOutput(1, TList::Class());
165 DefineOutput(2, TTree::Class());
181 Bool_t oldStatus = TH1::AddDirectoryStatus();
182 TH1::AddDirectory(kFALSE);
187 fh2ResponseUW=
new TH2F(
"fh2ResponseUW",
"fh2ResponseUW", 100, 0, 200, 100, 0, 200);
189 fh2ResponseW=
new TH2F(
"fh2ResponseW",
"fh2ResponseW", 100, 0, 200, 100, 0, 200);
191 fPhiJetCorr6=
new TH2F(
"fPhiJetCorr6",
"fPhiJetCorr6", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
193 fEtaJetCorr6=
new TH2F(
"fEtaJetCorr6",
"fEtaJetCorr6", 50, -1.5, 1.5, 50, -1.5, 1.5);
196 fPhiJetCorr7=
new TH2F(
"fPhiJetCorr7",
"fPhiJetCorr7", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
198 fEtaJetCorr7=
new TH2F(
"fEtaJetCorr7",
"fEtaJetCorr7", 50, -1.5, 1.5, 50, -1.5, 1.5);
201 fPtJetCorr=
new TH2F(
"fPtJetCorr",
"fPtJetCorr", 100, 0, 200, 100, 0, 200);
203 fPtJet=
new TH1F(
"fPtJet",
"fPtJet", 100, 0, 200);
206 fhpTjetpT=
new TH2F(
"fhpTjetpT",
"fhpTjetpT", 200, 0, 200, 200, 0, 200);
208 fhPt=
new TH1F(
"fhPt",
"fhPt", 200, 0, 200);
210 fhPhi=
new TH1F(
"fhPhi",
"fhPhi", 100, -TMath::Pi(), TMath::Pi());
212 fhTrackPhi=
new TH1F(
"fhTrackPhi",
"fhTrackPhi", 100, 0, 2*TMath::Pi());
218 const Int_t dimSpec = 6;
219 const Int_t nBinsSpec[6] = {50,100,100,20,100,2};
220 const Double_t lowBinSpec[6] = {0.,-10,0,0,0,0};
221 const Double_t hiBinSpec[6] = {5.,10.,100,20,100,2};
223 "LundIterativePlot [log(1/theta),log(z*theta),pTjet,algo]",
224 dimSpec,nBinsSpec,lowBinSpec,hiBinSpec);
229 const Int_t dimResol = 5;
230 const Int_t nBinsResol[5] = {10,10,80,80,80};
231 const Double_t lowBinResol[5] = {0,0,-1,-1,-1};
232 const Double_t hiBinResol[5] = {200,0.3,1,1,1};
234 "Mom.Resolution of Subjets vs opening angle",
235 dimResol,nBinsResol,lowBinResol,hiBinResol);
241 fNbOfConstvspT=
new TH2F(
"fNbOfConstvspT",
"fNbOfConstvspT", 100, 0, 100, 200, 0, 200);
251 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
256 TH1::AddDirectory(oldStatus);
257 const Int_t nVar = 12;
258 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
264 fShapesVarNames[0] =
"partonCode";
265 fShapesVarNames[1] =
"ptJet";
266 fShapesVarNames[2] =
"ktAv";
267 fShapesVarNames[3] =
"thetaAv";
268 fShapesVarNames[4] =
"zg";
269 fShapesVarNames[5] =
"deltaR";
270 fShapesVarNames[6] =
"ptJetMatch";
271 fShapesVarNames[7] =
"ktAvMatch";
272 fShapesVarNames[8] =
"thetaAvMatch";
273 fShapesVarNames[9] =
"zgMatch";
274 fShapesVarNames[10] =
"deltaRMatch";
275 fShapesVarNames[11]=
"weightPythia";
278 for(
Int_t ivar=0; ivar < nVar; ivar++){
279 cout<<
"looping over variables"<<endl;
285 delete [] fShapesVarNames;
308 AliAODTrack *triggerHadron = 0x0;
323 TClonesArray *TrackArray = NULL;
324 TClonesArray *TrackArrayMC = NULL;
326 else TrackArray = PartCont->
GetArray();
330 else NTracks = TrackArray->GetEntriesFast();
340 if (triggerHadronLabel==-99999) {
345 else triggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(triggerHadronLabel));
348 if (!triggerHadron) {
360 fhPt->Fill(triggerHadron->Pt());
367 AliAODTrack *
Track = 0x0;
368 for(
Int_t i=0; i < NTracks; i++){
371 if (!Track)
continue;
372 if(TMath::Abs(Track->Eta())>0.9)
continue;
373 if (Track->Pt()<0.15)
continue;
378 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
379 if (!Track)
continue;
380 if(TMath::Abs(Track->Eta())>0.9)
continue;
381 if (Track->Pt()<0.15)
continue;
393 Float_t rhoVal=0, rhoMassVal = 0.;
401 Printf(
"%s: Could not retrieve rho %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoName().Data());
402 }
else rhoVal = rhoParam->GetVal();
406 Printf(
"%s: Could not retrieve rho_m %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoMassName().Data());
407 }
else rhoMassVal = rhomParam->GetVal();
416 Int_t ifound=0, jfound=0;
417 Int_t ilab=-1, jlab=-1;
447 jetUS = jetContUS->
GetJet(i);
450 if(ifound==1) ilab = i;
453 if(ilab==-1)
continue;
454 jetUS=jetContUS->
GetJet(ilab);
460 Printf(
"jet2 does not exist, returning");
468 Printf(
"jet3 does not exist, returning");
471 cout<<
"jet 3 exists"<<jet3->
Pt()<<endl;
497 jetUS = jetContUS->
GetJet(i);
500 if(ifound==1) ilab = i;
503 if(ilab==-1)
continue;
504 jetUS=jetContUS->
GetJet(ilab);
508 Printf(
"jet2 does not exist, returning");
514 jet3 = jetContPart->
GetJet(j);
518 if(jfound==1) jlab = j;
521 if(jlab==-1)
continue;
522 jet3=jetContPart->
GetJet(jlab);
524 Printf(
"jet3 does not exist, returning");
530 Printf(
"jet3 does not exist, returning");
549 Float_t dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
559 dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
685 AliVParticle *vp1 = 0x0;
690 Printf(
"AliVParticle associated to constituent not found");
695 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
697 num=num+vp1->Pt()*dr;
731 TClonesArray *TracksArray = NULL;
732 TClonesArray *TracksArrayMC = NULL;
735 else TracksArray = PartCont->
GetArray();
738 if(!PartContMC || !TracksArrayMC)
return -2;
741 if(!PartCont || !TracksArray)
return -2;
745 AliAODTrack *
Track = 0x0;
749 else NTracks = TracksArray->GetEntriesFast();
751 for(
Int_t i=0; i < NTracks; i++){
754 if (!Track)
continue;
755 if(TMath::Abs(Track->Eta())>0.9)
continue;
757 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
759 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
763 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
764 if (!Track)
continue;
765 if(TMath::Abs(Track->Eta())>0.9)
continue;
766 if (Track->Pt()<0.15)
continue;
768 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
770 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
790 return Coronna(jet, jetContNb);
806 AliVParticle *vp1 = 0x0;
811 Printf(
"AliVParticle associated to constituent not found");
815 num=num+vp1->Pt()*vp1->Pt();
818 return TMath::Sqrt(num)/den;
828 return PTD(jet, jetContNb);
849 TVector3 ppJ1(pxjet, pyjet, pzjet);
850 TVector3 ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
852 TVector3 ppJ2(-pyjet, pxjet, 0);
854 AliVParticle *vp1 = 0x0;
859 Printf(
"AliVParticle associated to constituent not found");
863 TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
866 TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
867 TVector3 pPerp = pp - pLong;
870 Float_t ppjX = pPerp.Dot(ppJ2);
871 Float_t ppjY = pPerp.Dot(ppJ3);
872 Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
873 if(ppjT<=0)
return 0;
875 mxx += (ppjX * ppjX / ppjT);
876 myy += (ppjY * ppjY / ppjT);
877 mxy += (ppjX * ppjY / ppjT);
882 if(sump2==0)
return 0;
884 Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
885 TMatrixDSym m0(2,ele);
888 TMatrixDSymEigen m(m0);
890 TMatrixD evecm = m.GetEigenVectors();
891 eval = m.GetEigenValues();
895 if (eval[0] < eval[1]) jev = 1;
898 evec0 = TMatrixDColumn(evecm, jev);
901 TVector2 evec(compx, compy);
903 if(jev==1) circ=2*eval[0];
904 if(jev==0) circ=2*eval[1];
935 AliVParticle *vp1 = 0x0;
936 AliVParticle *vp2 = 0x0;
937 std::vector<int> ordindex;
942 if(ordindex.size()<2)
return -1;
946 Printf(
"AliVParticle associated to Leading constituent not found");
952 Printf(
"AliVParticle associated to Subleading constituent not found");
972 return LeSub(jet, jetContNb);
1001 AliVParticle *vp1 = 0x0;
1006 Printf(
"AliVParticle associated to constituent not found");
1014 mxx += ppt*ppt*deta*deta;
1015 myy += ppt*ppt*dphi*dphi;
1016 mxy -= ppt*ppt*deta*TMath::Abs(dphi);
1022 if(sump2==0)
return 0;
1024 Double_t ele[4] = {mxx , mxy , mxy , myy };
1025 TMatrixDSym m0(2,ele);
1028 TMatrixDSymEigen m(m0);
1030 TMatrixD evecm = m.GetEigenVectors();
1031 eval = m.GetEigenValues();
1035 if (eval[0] < eval[1]) jev = 1;
1038 evec0 = TMatrixDColumn(evecm, jev);
1041 TVector2 evec(compx, compy);
1043 if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
1044 if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
1058 return Sigma2(jet, jetContNb);
1078 TClonesArray *TracksArray = NULL;
1079 TClonesArray *TracksArrayMC = NULL;
1082 else TracksArray = PartCont->
GetArray();
1085 if(!PartContMC || !TracksArrayMC)
return -99999;
1088 if(!PartCont || !TracksArray)
return -99999;
1092 AliAODTrack *
Track = 0x0;
1097 Int_t triggers[100];
1098 for (
Int_t iTrigger=0; iTrigger<100; iTrigger++) triggers[iTrigger] = 0;
1102 else NTracks = TracksArray->GetEntriesFast();
1104 for(
Int_t i=0; i < NTracks; i++){
1107 if (!Track)
continue;
1108 if(TMath::Abs(Track->Eta())>0.9)
continue;
1109 if (Track->Pt()<0.15)
continue;
1110 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1117 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1118 if (!Track)
continue;
1119 if(TMath::Abs(Track->Eta())>0.9)
continue;
1120 if (Track->Pt()<0.15)
continue;
1121 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1130 if (iTT == 0)
return -99999;
1131 Int_t nbRn = 0, index = 0 ;
1133 nbRn = random.Integer(iTT);
1134 index = triggers[nbRn];
1143 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
1144 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
1145 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
1146 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
1147 double dphi = mphi-vphi;
1148 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
1149 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
1157 std::vector<fastjet::PseudoJet> fInputVectors;
1158 fInputVectors.clear();
1159 fastjet::PseudoJet PseudoTracks;
1165 if (!fTrk)
continue;
1167 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1168 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1169 fInputVectors.push_back(PseudoTracks);
1172 fastjet::JetAlgorithm jetalgo(fastjet::cambridge_algorithm);
1173 fastjet::GhostedAreaSpec ghost_spec(1, 1, 0.05);
1176 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1177 fastjet::AreaDefinition fAreaDef(fastjet::passive_area,ghost_spec);
1179 fastjet::ClusterSequenceArea fClustSeqSA(fInputVectors, fJetDef, fAreaDef);
1180 std::vector<fastjet::PseudoJet> fOutputJets;
1181 fOutputJets.clear();
1182 fOutputJets=fClustSeqSA.inclusive_jets(0);
1184 fastjet::PseudoJet jj;
1185 fastjet::PseudoJet j1;
1186 fastjet::PseudoJet j2;
1188 double ktaverage=-20;
1189 double thetaverage=-20;
1191 double flagSubjet=0;
1217 delta_R=j1.delta_R(j2);
1223 double y =log(1.0/delta_R);
1224 double lnpt_rel=log(j2.perp()*delta_R);
1225 double yh=j1.e()+j2.e();
1226 vector < fastjet::PseudoJet > constitj1 = sorted_by_pt(j1.constituents());
1229 ktaverage=ktaverage+lnpt_rel;
1230 thetaverage=thetaverage+delta_R;
1231 Double_t LundEntries[6] = {y,lnpt_rel,fOutputJets[0].perp(),nall,yh,flagSubjet};
1236 cout<<
"a z"<<z<<endl;
1242 }
catch (fastjet::Error) {
1243 AliError(
" [w] FJ Exception caught.");
1257 std::vector<fastjet::PseudoJet> fInputVectors;
1258 fInputVectors.clear();
1259 fastjet::PseudoJet PseudoTracks;
1265 if (!fTrk)
continue;
1267 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1268 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1269 fInputVectors.push_back(PseudoTracks);
1272 fastjet::JetAlgorithm jetalgo(fastjet::cambridge_algorithm);
1276 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1279 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1280 std::vector<fastjet::PseudoJet> fOutputJets;
1281 fOutputJets.clear();
1282 fOutputJets=fClustSeqSA.inclusive_jets(0);
1284 fastjet::PseudoJet jj;
1285 fastjet::PseudoJet j1;
1286 fastjet::PseudoJet j2;
1289 double thetaverage=0;
1298 if(j1.perp() < j2.perp())
swap(j1,j2);
1301 z=j2.perp()/(j1.perp()+j2.perp());
1302 delta_R=j1.delta_R(j2);
1304 double lnpt_rel=log(j2.perp()*delta_R);
1306 ktaverage=ktaverage+lnpt_rel;
1307 thetaverage=thetaverage+delta_R;
1312 average1=ktaverage/nall;
1313 average2=thetaverage/nall;
1317 }
catch (fastjet::Error) {
1318 AliError(
" [w] FJ Exception caught.");
1333 std::vector<fastjet::PseudoJet> fInputVectors;
1334 fInputVectors.clear();
1335 fastjet::PseudoJet PseudoTracks;
1337 std::vector<fastjet::PseudoJet> fInputVectorsM;
1338 fInputVectorsM.clear();
1339 fastjet::PseudoJet PseudoTracksM;
1346 if (!fTrk)
continue;
1347 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1348 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1349 fInputVectors.push_back(PseudoTracks);
1352 fastjet::JetAlgorithm jetalgo(fastjet::cambridge_algorithm);
1353 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1357 if (!fTrk)
continue;
1358 PseudoTracksM.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1359 PseudoTracksM.set_user_index(fJetM->
TrackAt(i)+100);
1360 fInputVectorsM.push_back(PseudoTracksM);
1363 fastjet::JetAlgorithm jetalgoM(fastjet::cambridge_algorithm);
1364 fastjet::JetDefinition fJetDefM(jetalgoM, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1368 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1369 std::vector<fastjet::PseudoJet> fOutputJets;
1370 fOutputJets.clear();
1371 fOutputJets=fClustSeqSA.inclusive_jets(0);
1373 fastjet::ClusterSequence fClustSeqSAM(fInputVectorsM, fJetDefM);
1374 std::vector<fastjet::PseudoJet> fOutputJetsM;
1375 fOutputJetsM.clear();
1376 fOutputJetsM=fClustSeqSAM.inclusive_jets(0);
1380 fastjet::PseudoJet jj,jjM;
1381 fastjet::PseudoJet j1,j1M;
1382 fastjet::PseudoJet j2,j2M;
1384 jjM=fOutputJetsM[0];
1389 while((jj.has_parents(j1,j2)) && (z1<zcut)){
1390 if(j1.perp() < j2.perp())
swap(j1,j2);
1392 z1=j2.perp()/(j1.perp()+j2.perp());
1398 while((jjM.has_parents(j1M,j2M)) && (z2<zcut)){
1399 if(j1M.perp() < j2M.perp())
swap(j1M,j2M);
1401 z2=j2M.perp()/(j1M.perp()+j2M.perp());
1407 double delta_R1=j1.delta_R(j1M);
1408 double delta_R2=j2.delta_R(j2M);
1409 double delta_R=j1.delta_R(j2);
1410 double residz=(z1-z2)/z2;
1411 double resid1=(j1.perp()-j1M.perp())/j1M.perp();
1412 double resid2=(j2.perp()-j2M.perp())/j2M.perp();
1415 Double_t ResolEntries[5] = {fOutputJets[0].perp(),delta_R,resid1,resid2,residz};
1419 }
catch (fastjet::Error) {
1420 AliError(
" [w] FJ Exception caught.");
1442 if (!fTrk2)
continue;
1443 if(i==index)
continue;
1450 Double_t deta=fTrk2->Eta()-fTrk1->Eta();
1453 if (TMath::Abs(fTrk1->Eta()-fTrk2->Eta()) <
fEtaCutValue*2.5*3){
1460 initdpsinner = TVector2::Phi_mpi_pi(initdpsinner);
1461 initdpsouter = TVector2::Phi_mpi_pi(initdpsouter);
1465 if (TMath::Abs(initdpsinner) < kLimit ||
1466 TMath::Abs(initdpsouter) < kLimit || initdpsinner * initdpsouter < 0 ) {
1471 for (
Double_t rad = 0.8; rad < 2.51; rad += 0.01) {
1473 dps = TVector2::Phi_mpi_pi(dps);
1474 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
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)
void RecursiveParentsMCAverage(AliEmcalJet *fJet, Int_t km, Double_t &aver1, Double_t &aver2, Double_t &aver3, Double_t &aver4)
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