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),
94 fHCheckResolutionSubjets(0x0),
96 fTreeObservableTagging(0)
99 for(
Int_t i=0;i<17;i++){
101 SetMakeGeneralHistograms(kTRUE);
102 DefineOutput(1, TList::Class());
103 DefineOutput(2, TTree::Class());
110 fMinFractionShared(0),
111 fJetShapeType(
kData),
112 fJetShapeSub(kNoSub),
113 fJetSelection(kInclusive),
114 fPtThreshold(-9999.),
119 fangWindowRecoil(0.6),
123 fCentSelectOn(kTRUE),
126 fOneConstSelectOn(kFALSE),
127 fTrackCheckPlots(kFALSE),
133 fMagFieldPolarity(1),
147 fHLundIterative(0x0),
148 fHCheckResolutionSubjets(0x0),
150 fTreeObservableTagging(0)
154 for(
Int_t i=0;i<17;i++){
158 DefineOutput(1, TList::Class());
159 DefineOutput(2, TTree::Class());
175 Bool_t oldStatus = TH1::AddDirectoryStatus();
176 TH1::AddDirectory(kFALSE);
181 fh2ResponseUW=
new TH2F(
"fh2ResponseUW",
"fh2ResponseUW", 100, 0, 200, 100, 0, 200);
183 fh2ResponseW=
new TH2F(
"fh2ResponseW",
"fh2ResponseW", 100, 0, 200, 100, 0, 200);
185 fPhiJetCorr6=
new TH2F(
"fPhiJetCorr6",
"fPhiJetCorr6", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
187 fEtaJetCorr6=
new TH2F(
"fEtaJetCorr6",
"fEtaJetCorr6", 50, -1.5, 1.5, 50, -1.5, 1.5);
190 fPhiJetCorr7=
new TH2F(
"fPhiJetCorr7",
"fPhiJetCorr7", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
192 fEtaJetCorr7=
new TH2F(
"fEtaJetCorr7",
"fEtaJetCorr7", 50, -1.5, 1.5, 50, -1.5, 1.5);
195 fPtJetCorr=
new TH2F(
"fPtJetCorr",
"fPtJetCorr", 100, 0, 200, 100, 0, 200);
197 fPtJet=
new TH1F(
"fPtJet",
"fPtJet", 100, 0, 200);
200 fhpTjetpT=
new TH2F(
"fhpTjetpT",
"fhpTjetpT", 200, 0, 200, 200, 0, 200);
202 fhPt=
new TH1F(
"fhPt",
"fhPt", 200, 0, 200);
204 fhPhi=
new TH1F(
"fhPhi",
"fhPhi", 100, -TMath::Pi(), TMath::Pi());
206 fhTrackPhi=
new TH1F(
"fhTrackPhi",
"fhTrackPhi", 100, 0, 2*TMath::Pi());
212 const Int_t dimSpec = 5;
213 const Int_t nBinsSpec[5] = {50,50,10,3,10};
214 const Double_t lowBinSpec[5] = {0.0,-10, 0,0,0};
215 const Double_t hiBinSpec[5] = {5.0, 0,200,3,10};
217 "LundIterativePlot [log(1/theta),log(z*theta),pTjet,algo]",
218 dimSpec,nBinsSpec,lowBinSpec,hiBinSpec);
223 const Int_t dimResol = 4;
224 const Int_t nBinsResol[4] = {10,10,80,80};
225 const Double_t lowBinResol[4] = {0,0,-1,-1};
226 const Double_t hiBinResol[4] = {200,0.3,1,1};
228 "Mom.Resolution of Subjets vs opening angle",
229 dimResol,nBinsResol,lowBinResol,hiBinResol);
235 fNbOfConstvspT=
new TH2F(
"fNbOfConstvspT",
"fNbOfConstvspT", 100, 0, 100, 200, 0, 200);
245 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
250 TH1::AddDirectory(oldStatus);
252 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
258 fShapesVarNames[0] =
"partonCode";
259 fShapesVarNames[1] =
"ptJet";
260 fShapesVarNames[2] =
"ptDJet";
261 fShapesVarNames[3] =
"phiJet";
263 fShapesVarNames[4] =
"angularity";
265 fShapesVarNames[5] =
"lesub";
268 fShapesVarNames[6] =
"ptJetMatch";
269 fShapesVarNames[7] =
"ptDJetMatch";
270 fShapesVarNames[8] =
"phiJetMatch";
272 fShapesVarNames[9] =
"angularityMatch";
274 fShapesVarNames[10] =
"lesubMatch";
276 fShapesVarNames[11]=
"weightPythia";
277 fShapesVarNames[12]=
"nsd";
278 fShapesVarNames[13]=
"nall";
285 cout<<
"looping over variables"<<endl;
291 delete [] fShapesVarNames;
314 AliAODTrack *triggerHadron = 0x0;
329 TClonesArray *TrackArray = NULL;
330 TClonesArray *TrackArrayMC = NULL;
332 else TrackArray = PartCont->GetArray();
336 else NTracks = TrackArray->GetEntriesFast();
346 if (triggerHadronLabel==-99999) {
351 else triggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(triggerHadronLabel));
354 if (!triggerHadron) {
366 fhPt->Fill(triggerHadron->Pt());
373 AliAODTrack *
Track = 0x0;
374 for(
Int_t i=0; i < NTracks; i++){
377 if (!Track)
continue;
378 if(TMath::Abs(Track->Eta())>0.9)
continue;
379 if (Track->Pt()<0.15)
continue;
384 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
385 if (!Track)
continue;
386 if(TMath::Abs(Track->Eta())>0.9)
continue;
387 if (Track->Pt()<0.15)
continue;
396 TClonesArray *trackArrayAn = partContAn->GetArray();
399 Float_t rhoVal=0, rhoMassVal = 0.;
402 jetCont->ResetCurrentID();
407 Printf(
"%s: Could not retrieve rho %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoName().Data());
408 }
else rhoVal = rhoParam->GetVal();
412 Printf(
"%s: Could not retrieve rho_m %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoMassName().Data());
413 }
else rhoMassVal = rhomParam->GetVal();
422 Int_t ifound=0, jfound=0;
423 Int_t ilab=-1, jlab=-1;
453 jetUS = jetContUS->
GetJet(i);
456 if(ifound==1) ilab = i;
459 if(ilab==-1)
continue;
460 jetUS=jetContUS->
GetJet(ilab);
466 Printf(
"jet2 does not exist, returning");
474 Printf(
"jet3 does not exist, returning");
477 cout<<
"jet 3 exists"<<jet3->
Pt()<<endl;
503 jetUS = jetContUS->
GetJet(i);
506 if(ifound==1) ilab = i;
509 if(ilab==-1)
continue;
510 jetUS=jetContUS->
GetJet(ilab);
514 Printf(
"jet2 does not exist, returning");
520 jet3 = jetContPart->
GetJet(j);
524 if(jfound==1) jlab = j;
527 if(jlab==-1)
continue;
528 jet3=jetContPart->
GetJet(jlab);
530 Printf(
"jet3 does not exist, returning");
536 Printf(
"jet3 does not exist, returning");
555 Float_t dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
565 dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
611 Float_t ptMatch=0., ptDMatch=0., massMatch=0., constMatch=0.,angulMatch=0.,circMatch=0., lesubMatch=0., sigma2Match=0., coronnaMatch=0;
620 massMatch=jet3->
Phi();
635 massMatch=jet2->
Pt();
662 fShapesVar[6] = ptMatch;
663 fShapesVar[7] = ptDMatch;
664 fShapesVar[8] = massMatch;
665 fShapesVar[9] = angulMatch;
667 fShapesVar[10] = lesubMatch;
669 fShapesVar[11] = kWeight;
708 AliVParticle *vp1 = 0x0;
713 Printf(
"AliVParticle associated to constituent not found");
718 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
720 num=num+vp1->Pt()*dr;
754 TClonesArray *TracksArray = NULL;
755 TClonesArray *TracksArrayMC = NULL;
758 else TracksArray = PartCont->GetArray();
761 if(!PartContMC || !TracksArrayMC)
return -2;
764 if(!PartCont || !TracksArray)
return -2;
768 AliAODTrack *
Track = 0x0;
772 else NTracks = TracksArray->GetEntriesFast();
774 for(
Int_t i=0; i < NTracks; i++){
777 if (!Track)
continue;
778 if(TMath::Abs(Track->Eta())>0.9)
continue;
780 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
782 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
786 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
787 if (!Track)
continue;
788 if(TMath::Abs(Track->Eta())>0.9)
continue;
789 if (Track->Pt()<0.15)
continue;
791 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
793 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
813 return Coronna(jet, jetContNb);
829 AliVParticle *vp1 = 0x0;
834 Printf(
"AliVParticle associated to constituent not found");
838 num=num+vp1->Pt()*vp1->Pt();
841 return TMath::Sqrt(num)/den;
851 return PTD(jet, jetContNb);
872 TVector3 ppJ1(pxjet, pyjet, pzjet);
873 TVector3 ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
875 TVector3 ppJ2(-pyjet, pxjet, 0);
877 AliVParticle *vp1 = 0x0;
882 Printf(
"AliVParticle associated to constituent not found");
886 TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
889 TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
890 TVector3 pPerp = pp - pLong;
893 Float_t ppjX = pPerp.Dot(ppJ2);
894 Float_t ppjY = pPerp.Dot(ppJ3);
895 Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
896 if(ppjT<=0)
return 0;
898 mxx += (ppjX * ppjX / ppjT);
899 myy += (ppjY * ppjY / ppjT);
900 mxy += (ppjX * ppjY / ppjT);
905 if(sump2==0)
return 0;
907 Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
908 TMatrixDSym m0(2,ele);
911 TMatrixDSymEigen m(m0);
913 TMatrixD evecm = m.GetEigenVectors();
914 eval = m.GetEigenValues();
918 if (eval[0] < eval[1]) jev = 1;
921 evec0 = TMatrixDColumn(evecm, jev);
924 TVector2 evec(compx, compy);
926 if(jev==1) circ=2*eval[0];
927 if(jev==0) circ=2*eval[1];
958 AliVParticle *vp1 = 0x0;
959 AliVParticle *vp2 = 0x0;
960 std::vector<int> ordindex;
965 if(ordindex.size()<2)
return -1;
969 Printf(
"AliVParticle associated to Leading constituent not found");
975 Printf(
"AliVParticle associated to Subleading constituent not found");
995 return LeSub(jet, jetContNb);
1024 AliVParticle *vp1 = 0x0;
1029 Printf(
"AliVParticle associated to constituent not found");
1037 mxx += ppt*ppt*deta*deta;
1038 myy += ppt*ppt*dphi*dphi;
1039 mxy -= ppt*ppt*deta*TMath::Abs(dphi);
1045 if(sump2==0)
return 0;
1047 Double_t ele[4] = {mxx , mxy , mxy , myy };
1048 TMatrixDSym m0(2,ele);
1051 TMatrixDSymEigen m(m0);
1053 TMatrixD evecm = m.GetEigenVectors();
1054 eval = m.GetEigenValues();
1058 if (eval[0] < eval[1]) jev = 1;
1061 evec0 = TMatrixDColumn(evecm, jev);
1064 TVector2 evec(compx, compy);
1066 if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
1067 if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
1081 return Sigma2(jet, jetContNb);
1101 TClonesArray *TracksArray = NULL;
1102 TClonesArray *TracksArrayMC = NULL;
1105 else TracksArray = PartCont->GetArray();
1108 if(!PartContMC || !TracksArrayMC)
return -99999;
1111 if(!PartCont || !TracksArray)
return -99999;
1115 AliAODTrack *
Track = 0x0;
1120 Int_t triggers[100];
1121 for (
Int_t iTrigger=0; iTrigger<100; iTrigger++) triggers[iTrigger] = 0;
1125 else NTracks = TracksArray->GetEntriesFast();
1127 for(
Int_t i=0; i < NTracks; i++){
1130 if (!Track)
continue;
1131 if(TMath::Abs(Track->Eta())>0.9)
continue;
1132 if (Track->Pt()<0.15)
continue;
1133 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1140 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1141 if (!Track)
continue;
1142 if(TMath::Abs(Track->Eta())>0.9)
continue;
1143 if (Track->Pt()<0.15)
continue;
1144 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1153 if (iTT == 0)
return -99999;
1154 Int_t nbRn = 0, index = 0 ;
1156 nbRn = random.Integer(iTT);
1157 index = triggers[nbRn];
1166 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
1167 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
1168 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
1169 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
1170 double dphi = mphi-vphi;
1171 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
1172 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
1180 std::vector<fastjet::PseudoJet> fInputVectors;
1181 fInputVectors.clear();
1182 fastjet::PseudoJet PseudoTracks;
1187 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
1188 if (!fTrk)
continue;
1190 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1191 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1192 fInputVectors.push_back(PseudoTracks);
1195 fastjet::JetAlgorithm jetalgo(fastjet::antikt_algorithm);
1197 if(ReclusterAlgo==0){ xflagalgo=0.5;
1198 jetalgo=fastjet::kt_algorithm ;}
1200 if(ReclusterAlgo==1){ xflagalgo=1.5;
1201 jetalgo=fastjet::cambridge_algorithm;}
1202 if(ReclusterAlgo==2){ xflagalgo=2.5;
1203 jetalgo=fastjet::antikt_algorithm;}
1205 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1208 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1209 std::vector<fastjet::PseudoJet> fOutputJets;
1210 fOutputJets.clear();
1211 fOutputJets=fClustSeqSA.inclusive_jets(0);
1213 fastjet::PseudoJet jj;
1214 fastjet::PseudoJet j1;
1215 fastjet::PseudoJet j2;
1219 while(jj.has_parents(j1,j2)){
1221 if(j1.perp() < j2.perp())
swap(j1,j2);
1222 double delta_R=j1.delta_R(j2);
1223 double z=j2.perp()/(j1.perp()+j2.perp());
1224 double y =log(1.0/delta_R);
1225 double lnpt_rel=log(z*delta_R);
1228 Double_t LundEntries[5] = {y,lnpt_rel,fOutputJets[0].perp(),xflagalgo,ndepth};
1232 if(ReclusterAlgo==1){
1237 }
catch (fastjet::Error) {
1238 AliError(
" [w] FJ Exception caught.");
1253 std::vector<fastjet::PseudoJet> fInputVectors;
1254 fInputVectors.clear();
1255 fastjet::PseudoJet PseudoTracks;
1257 std::vector<fastjet::PseudoJet> fInputVectorsM;
1258 fInputVectorsM.clear();
1259 fastjet::PseudoJet PseudoTracksM;
1265 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
1266 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);
1273 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1276 AliVParticle *fTrk = fJetM->
TrackAt(i, fTrackContM->GetArray());
1277 if (!fTrk)
continue;
1278 PseudoTracksM.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1279 PseudoTracksM.set_user_index(fJetM->
TrackAt(i)+100);
1280 fInputVectorsM.push_back(PseudoTracksM);
1283 fastjet::JetAlgorithm jetalgoM(fastjet::cambridge_algorithm);
1284 fastjet::JetDefinition fJetDefM(jetalgoM, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1288 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1289 std::vector<fastjet::PseudoJet> fOutputJets;
1290 fOutputJets.clear();
1291 fOutputJets=fClustSeqSA.inclusive_jets(0);
1293 fastjet::ClusterSequence fClustSeqSAM(fInputVectorsM, fJetDefM);
1294 std::vector<fastjet::PseudoJet> fOutputJetsM;
1295 fOutputJetsM.clear();
1296 fOutputJetsM=fClustSeqSAM.inclusive_jets(0);
1300 fastjet::PseudoJet jj,jjM;
1301 fastjet::PseudoJet j1,j1M;
1302 fastjet::PseudoJet j2,j2M;
1304 jjM=fOutputJetsM[0];
1308 while((jj.has_parents(j1,j2)) && (z<zcut)){
1309 if(j1.perp() < j2.perp())
swap(j1,j2);
1311 z=j2.perp()/(j1.perp()+j2.perp());
1317 while((jjM.has_parents(j1M,j2M)) && (z<zcut)){
1318 if(j1M.perp() < j2M.perp())
swap(j1M,j2M);
1320 z=j2M.perp()/(j1M.perp()+j2M.perp());
1326 double delta_R1=j1.delta_R(j1M);
1327 double delta_R2=j2.delta_R(j2M);
1328 double delta_R=j1.delta_R(j2);
1330 double resid1=(j1.perp()-j1M.perp())/j1M.perp();
1331 double resid2=(j2.perp()-j2M.perp())/j2M.perp();
1334 Double_t ResolEntries[4] = {fOutputJets[0].perp(),delta_R,resid1,resid2};
1340 }
catch (fastjet::Error) {
1341 AliError(
" [w] FJ Exception caught.");
1362 AliVParticle *fTrk2 = fJet->
TrackAt(i, fTrackCont->GetArray());
1363 if (!fTrk2)
continue;
1364 if(i==index)
continue;
1371 Double_t deta=fTrk2->Eta()-fTrk1->Eta();
1374 if (TMath::Abs(fTrk1->Eta()-fTrk2->Eta()) <
fEtaCutValue*2.5*3){
1381 initdpsinner = TVector2::Phi_mpi_pi(initdpsinner);
1382 initdpsouter = TVector2::Phi_mpi_pi(initdpsouter);
1386 if (TMath::Abs(initdpsinner) < kLimit ||
1387 TMath::Abs(initdpsouter) < kLimit || initdpsinner * initdpsouter < 0 ) {
1392 for (
Double_t rad = 0.8; rad < 2.51; rad += 0.01) {
1394 dps = TVector2::Phi_mpi_pi(dps);
1395 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
void RecursiveParents(AliEmcalJet *fJet, AliJetContainer *fJetCont, Int_t ReclusterAlgo)
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
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)
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
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