6 #include <TClonesArray.h>
10 #include <THnSparse.h>
13 #include <TLorentzVector.h>
20 #include "TMatrixDSym.h"
21 #include "TMatrixDSymEigen.h"
24 #include "AliVCluster.h"
25 #include "AliVTrack.h"
30 #include "AliMCEvent.h"
31 #include "AliGenPythiaEventHeader.h"
32 #include "AliAODMCHeader.h"
33 #include "AliMCEvent.h"
34 #include "AliAnalysisManager.h"
41 #include "AliAODEvent.h"
54 fMinFractionShared(0),
57 fJetSelection(kInclusive),
65 fangWindowRecoil(0.6),
88 fhJetTriggeredPt(0x0),
89 fhTriggerVSjetPt(0x0),
90 fhdPhiTrigVSjetPt(0x0),
91 fhdPhiTrigVSjetPtNOCUT(0x0),
92 fhdPhiPartVSjetPt(0x0),
93 fhdPhiPartVSjetPtVSPartPt(0x0),
106 fhTau2OverTau1vsJetPt(0x0),
107 fhTau1vsTau2vsTau3(0x0),
112 SetMakeGeneralHistograms(kTRUE);
119 fMinFractionShared(0),
120 fJetShapeType(
kData),
121 fJetShapeSub(kNoSub),
122 fJetSelection(kInclusive),
124 fPtThreshold(-9999.),
130 fangWindowRecoil(0.6),
134 fCentSelectOn(kTRUE),
153 fhJetTriggeredPt(0x0),
154 fhTriggerVSjetPt(0x0),
155 fhdPhiTrigVSjetPt(0x0),
156 fhdPhiTrigVSjetPtNOCUT(0x0),
157 fhdPhiPartVSjetPt(0x0),
158 fhdPhiPartVSjetPtVSPartPt(0x0),
171 fhTau2OverTau1vsJetPt(0x0),
172 fhTau1vsTau2vsTau3(0x0),
181 DefineOutput(1, TTree::Class());
203 const Int_t nVarS = 6 * 3 + 1;
204 const Int_t nVarH = 5;
212 fSubstructureVarNames[0] =
"JetPt";
213 fSubstructureVarNames[1] =
"Tau1";
214 fSubstructureVarNames[2] =
"Tau2";
215 fSubstructureVarNames[3] =
"Tau3";
216 fSubstructureVarNames[4] =
"DeltaR2hardest";
217 fSubstructureVarNames[5] =
"DeltaPhi2hardest";
218 fSubstructureVarNames[6] =
"JetPtMatch";
219 fSubstructureVarNames[7] =
"Tau1Match";
220 fSubstructureVarNames[8] =
"Tau2Match";
221 fSubstructureVarNames[9] =
"Tau3Match";
222 fSubstructureVarNames[10] =
"DeltaR2hardestMatch";
223 fSubstructureVarNames[11] =
"DeltaPhi2hardestMatch";
224 fSubstructureVarNames[12] =
"JetPtDet";
225 fSubstructureVarNames[13] =
"Tau1Det";
226 fSubstructureVarNames[14] =
"Tau2Det";
227 fSubstructureVarNames[15] =
"Tau3Det";
228 fSubstructureVarNames[16] =
"DeltaR2hardestDet";
229 fSubstructureVarNames[17] =
"DeltaPhi2hardestDet";
230 fSubstructureVarNames[18] =
"weightPythia";
232 fHadronTriggerVarNames[0] =
"TriggerPt";
233 fHadronTriggerVarNames[1] =
"JetPt";
234 fHadronTriggerVarNames[2] =
"DeltaPhiJetTrigger";
235 fHadronTriggerVarNames[3] =
"PartPt";
236 fHadronTriggerVarNames[4] =
"DeltaPhiJetParticles";
238 for(
Int_t ivar = 0; ivar<nVarS; ivar++) {
239 cout<<
"looping over variables to create the branches of my Substructure Tree"<<endl;
243 for(
Int_t ivar = 0; ivar<nVarH; ivar++) {
244 cout<<
"looping over variables to create the branches of my HadronTrigger Tree"<<endl;
250 fhCentrality=
new TH1F(
"fhCentrality",
"Centrality;c", 200, 0, 100);
253 fhJetPt=
new TH1F(
"fhJetPt",
"fhJetPt;Jet p_{T} (GeV)", 100, 0, 100);
256 fhJetPhi=
new TH1F(
"fhJetPhi",
"fhJetPhi;Jet #phi", 100, 0, 2*TMath::Pi());
259 fhTrackPt=
new TH1F(
"fhTrackPt",
"fhTrackPt;Track p_{T} (GeV)", 100, 0, 100);
262 fhTrackPt_JT=
new TH1F(
"fhTrackPt_JT",
"fhTrackPt_JT;Track p_{T} (GeV)", 100, 0, 100);
265 fhTriggerPt=
new TH1F(
"fhTriggerPt",
"fhTriggerPt;Trigger p_{T} (GeV)", 100, 0, 100);
268 fhJetTriggeredPt=
new TH1F(
"fhJetTriggeredPt",
"fhJetTriggeredPt;Triggered Jet p_{T} (GeV)", 100, 0, 100);
271 fhTriggerVSjetPt=
new TH2F(
"fhTriggerVSjetPt",
"fhTriggerVSjetPt;Trigger p_{T} (GeV);Jet p_{T} (GeV)", 100, 0, 100, 100, 0, 100);
274 fhdPhiTrigVSjetPtNOCUT=
new TH2F(
"fhdPhiTrigVSjetPtNOCUT",
"fhdPhiTrigVSjetPtNOCUT;#Delta#phi (Trig-Jet);Jet p_{T} (GeV)", 100, -0.5*TMath::Pi(), 1.5*TMath::Pi(), 100, 0, 100);
277 fhdPhiTrigVSjetPt=
new TH2F(
"fhdPhiTrigVSjetPt",
"fhdPhiTrigVSjetPt;#Delta#phi (Trig-Jet);Jet p_{T} (GeV)", 100, TMath::Pi() - 0.6, TMath::Pi(), 100, 0, 100);
280 fhdPhiPartVSjetPt=
new TH2F(
"fhdPhiPartVSjetPt",
"fhdPhiPartVSjetPt;#Delta#phi (Part-Jet);Jet p_{T} (GeV)", 100, -0.5*TMath::Pi(), 1.5*TMath::Pi(), 100, 0, 100);
283 fhdPhiPartVSjetPtVSPartPt=
new TH3F(
"fhdPhiPartVSjetPtVSPartPt",
"fhdPhiPartVSjetPtVSPartPt;#Delta#phi (Part-Jet);Jet p_{T} (GeV);Part p_{T} (GeV)", 100, -0.5*TMath::Pi(), 1.5*TMath::Pi(), 100, 0, 100, 100, 0, 100);
288 fhTau1 =
new TH1F(
"fhTau1",
"fhTau1;#tau_{1}", 100, 0, 1);
291 fhTau2 =
new TH1F(
"fhTau2",
"fhTau2;#tau_{2}", 100, 0, 1);
294 fhTau3 =
new TH1F(
"fhTau3",
"fhTau3;#tau_{3}", 100, 0, 1);
297 fhTau1vsTau2 =
new TH2F(
"fhTau1vsTau2",
"fhTau1vsTau2;#tau_{1};#tau_{2}", 100, 0, 1, 100, 0, 1);
300 fhTau1vsTau3 =
new TH2F(
"fhTau1vsTau3",
"fhTau1vsTau3;#tau_{1};#tau_{3}", 100, 0, 1, 100, 0, 1);
303 fhTau2vsTau3 =
new TH2F(
"fhTau2vsTau3",
"fhTau2vsTau3;#tau_{2};#tau_{3}", 100, 0, 1, 100, 0, 1);
306 fhTau1vsTau2vsTau3 =
new TH3F(
"fhTau1vsTau2vsTau3",
"fhTau1vsTau2vsTau3;#tau_{1};#tau_{2};#tau_{3}", 100, 0, 1, 100, 0, 1, 100, 0, 1);
309 fhTau2OverTau1 =
new TH1F(
"fhTau2OverTau1",
"fhTau2OverTau1;#tau_{2}/#tau_{1}", 100, 0, 1);
312 fhTau3OverTau2 =
new TH1F(
"fhTau3OverTau2",
"fhTau3OverTau2;#tau_{3}/#tau_{2}", 100, 0, 1);
316 fhTau2vsJetPt =
new TH2F(
"fhTau2vsJetPt",
"fhTau2vsJetPt;#tau_{2}; Jet p_{T} (GeV)", 100, 0, 1, 100, 0, 100);
319 fhTau2OverTau1vsJetPt =
new TH2F(
"fhTau2OverTau1vsJetPt",
"fhTau2OverTau1vsJetPt;#tau_{2}/#tau_{1}; Jet p_{T} (GeV)", 100, 0, 1, 100, 0, 100);
351 TClonesArray *tracksArray = partCont->GetArray();
355 if(!partCont || !tracksArray)
return 0;
362 for(
Int_t iTrack=0; iTrack <= tracksArray->GetEntriesFast(); iTrack++){
363 track =
static_cast<AliPicoTrack*
>(tracksArray->At(iTrack));
364 if (!track || track->
Pt()<1)
continue;
369 JetCont->ResetCurrentID();
371 if (!jetTEMP)
continue;
373 if (TMath::Abs(jetTEMP->
Eta()) > eta_max -
fJetRadius)
continue;
383 if(trigger_index >= 0 &&
fHTon) {
384 trigger =
static_cast<AliPicoTrack*
>(tracksArray->At(trigger_index));
389 JetCont->ResetCurrentID();
391 if (!jetTEMP)
continue;
393 if (TMath::Abs(jetTEMP->
Eta()) > eta_max -
fJetRadius)
continue;
400 if (TMath::Abs(dphi) < TMath::Pi() - phi_h)
continue;
407 for(
Int_t iTrack=0; iTrack <= tracksArray->GetEntriesFast(); iTrack++){
408 track =
static_cast<AliPicoTrack*
>(tracksArray->At(iTrack));
409 if (!track)
continue;
411 if(TMath::Abs(track->
Eta())>eta_max)
continue;
437 Float_t *shape, *shapePart, *shapeDet;
441 JetCont->ResetCurrentID();
446 if (TMath::Abs(jet1->
Eta()) > eta_max -
fJetRadius)
continue;
460 jetUS = jetContUS->
GetJet(i);
463 if(ifound==1) ilab = i;
466 if(ilab == -1)
continue;
467 jetUS=jetContUS->
GetJet(ilab);
473 Printf(
"jet2 does not exist, returning");
482 Printf(
"jet3 does not exist, returning");
485 cout<<
"jet 3 exists"<<jet3->
Pt()<<endl;
495 if(!partonsInfo)
return 0;
503 if (shape[6]<5.)
continue;
504 for (
Int_t i=0; i<6; i++) {
509 for (
Int_t i=6; i<18; i++) {
518 if (shapePart[6]<5. || shapeDet[6]<5.)
continue;
519 for (
Int_t i=0; i<6; i++) {
527 if (shape[1]>=0. && shape[2]<0. && shape[3]<0.) {
530 else if (shape[1]>=0. && shape[2]>0. && shape[3]<0.) {
538 else if (shape[1]>=0. && shape[2]>0. && shape[3]>0.) {
579 AliVParticle *vp1 = 0x0;
584 Printf(
"AliVParticle associated to constituent not found");
589 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
591 num=num+vp1->Pt()*dr;
616 AliVParticle *vp1 = 0x0;
621 Printf(
"AliVParticle associated to constituent not found");
625 num=num+vp1->Pt()*vp1->Pt();
628 return TMath::Sqrt(num)/den;
637 return PTD(jet, jetContNb);
658 TVector3 ppJ1(pxjet, pyjet, pzjet);
659 TVector3 ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
661 TVector3 ppJ2(-pyjet, pxjet, 0);
663 AliVParticle *vp1 = 0x0;
668 Printf(
"AliVParticle associated to constituent not found");
672 TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
675 TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
676 TVector3 pPerp = pp - pLong;
679 Float_t ppjX = pPerp.Dot(ppJ2);
680 Float_t ppjY = pPerp.Dot(ppJ3);
681 Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
682 if(ppjT<=0)
return 0;
684 mxx += (ppjX * ppjX / ppjT);
685 myy += (ppjY * ppjY / ppjT);
686 mxy += (ppjX * ppjY / ppjT);
691 if(sump2==0)
return 0;
693 Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
694 TMatrixDSym m0(2,ele);
697 TMatrixDSymEigen m(m0);
699 TMatrixD evecm = m.GetEigenVectors();
700 eval = m.GetEigenValues();
704 if (eval[0] < eval[1]) jev = 1;
707 evec0 = TMatrixDColumn(evecm, jev);
710 TVector2 evec(compx, compy);
712 if(jev==1) circ=2*eval[0];
713 if(jev==0) circ=2*eval[1];
737 AliVParticle *vp1 = 0x0;
738 AliVParticle *vp2 = 0x0;
739 std::vector<int> ordindex;
744 if(ordindex.size()<2)
return -1;
748 Printf(
"AliVParticle associated to Leading constituent not found");
754 Printf(
"AliVParticle associated to Subleading constituent not found");
773 return LeSub(jet, jetContNb);
801 AliVParticle *vp1 = 0x0;
806 Printf(
"AliVParticle associated to constituent not found");
814 mxx += ppt*ppt*deta*deta;
815 myy += ppt*ppt*dphi*dphi;
816 mxy -= ppt*ppt*deta*TMath::Abs(dphi);
822 if(sump2==0)
return 0;
824 Double_t ele[4] = {mxx , mxy , mxy , myy };
825 TMatrixDSym m0(2,ele);
828 TMatrixDSymEigen m(m0);
830 TMatrixD evecm = m.GetEigenVectors();
831 eval = m.GetEigenValues();
835 if (eval[0] < eval[1]) jev = 1;
838 evec0 = TMatrixDColumn(evecm, jev);
841 TVector2 evec(compx, compy);
843 if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
844 if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
857 return Sigma2(jet, jetContNb);
865 TClonesArray *tracksArray = partCont->GetArray();
867 if(!partCont || !tracksArray)
return -99999;
868 AliAODTrack *track = 0x0;
874 for (
Int_t iTrigger=0; iTrigger<100; iTrigger++) triggers[iTrigger] = 0;
877 for(
Int_t iTrack=0; iTrack <= tracksArray->GetEntriesFast(); iTrack++){
880 picoTrack =
static_cast<AliPicoTrack*
>(tracksArray->At(iTrack));
881 if (!picoTrack)
continue;
884 if(TMath::Abs(picoTrack->
Eta())>0.9)
continue;
885 if(picoTrack->
Pt()<0.15)
continue;
890 if ((picoTrack->
Pt() >= minpT) && (picoTrack->
Pt()< maxpT)) {
891 trackList->Add(picoTrack);
892 triggers[iTT] = iTrack;
898 if (!emcPart)
continue;
899 if(TMath::Abs(emcPart->
Eta())>0.9)
continue;
900 if (emcPart->
Pt()<0.15)
continue;
902 if ((emcPart->
Pt() >= minpT) && (emcPart->
Pt()< maxpT)) {
903 trackList->Add(emcPart);
904 triggers[iTT] = iTrack;
909 track =
static_cast<AliAODTrack*
>(tracksArray->At(iTrack));
910 if (!track)
continue;
911 if(TMath::Abs(track->Eta())>0.9)
continue;
912 if (track->Pt()<0.15)
continue;
913 if (!(track->TestFilterBit(768)))
continue;
915 if ((track->Pt() >= minpT) && (track->Pt()< maxpT)) {
916 trackList->Add(track);
917 triggers[iTT] = iTrack;
924 if (iTT == 0)
return -99999;
925 Int_t nbRn = 0, index = 0 ;
926 TRandom3* random =
new TRandom3(0);
927 nbRn = random->Integer(iTT);
929 index = triggers[nbRn];
938 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
939 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
940 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
941 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
942 double dphi = mphi-vphi;
943 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
944 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
976 if (x <= y)
return x;
984 if (y < minimum) minimum = y;
985 if (z < minimum) minimum = z;
994 dEta = jet1->
Eta() - jet2->
Eta();
995 return TMath::Sqrt(dEta*dEta + dPhi*dPhi);
1004 return TMath::Sqrt(dEta*dEta + dPhi*dPhi);
1012 dEta = jet->
Eta() - part->
Eta();
1013 return TMath::Sqrt(dEta*dEta + dPhi*dPhi);
1021 if(dPhi>2*TMath::Pi()) dPhi -= 2*TMath::Pi();
1022 if(dPhi<-2*TMath::Pi()) dPhi += 2*TMath::Pi();
1023 if(dPhi<-0.5*TMath::Pi()) dPhi += 2*TMath::Pi();
1024 if(dPhi>1.5*TMath::Pi()) dPhi -= 2*TMath::Pi();
1040 PtArray =
new Float_t[NumberOfJets];
1041 indeces =
new Int_t[NumberOfJets];
1043 for(
Int_t i=0;i<NumberOfJets;i++){
1044 temp = finder->
GetJet(i);
1045 PtArray[i] = temp->
Pt();
1049 for(
Int_t i=0; i<NumberOfJets - 1; i++){
1050 for(
Int_t j=0; j<(NumberOfJets - i - 1); j++){
1051 if(PtArray[j]>PtArray[j+1]){
1053 PtArray[j]=PtArray[j+1];
1057 indeces[j]=indeces[j+1];
1090 dR1 =
R_distance(subJet1hardest,mainJetParticle);
1091 tau1_num += mainJetParticle->
Pt() * dR1;
1100 Float_t dR1, tau1_num_min = 10;
1106 for (
Int_t n=0; n<NumberOfSubjets; n++) {
1108 subJet = finder->
GetJet(n);
1112 tau1_num += mainJetParticle->
Pt() * dR1;
1114 if (tau1_num < tau1_num_min) tau1_num_min = tau1_num;
1116 return tau1_num_min;
1130 dR1 =
R_distance(subJet1hardest,mainJetParticle);
1131 dR2 =
R_distance(subJet2hardest,mainJetParticle);
1133 tau2_num += mainJetParticle->
Pt() * dRmin;
1148 dR1 =
R_distance(subJet1hardest,mainJetParticle);
1149 dR2 =
R_distance(subJet2hardest,mainJetParticle);
1150 dR3 =
R_distance(subJet3hardest,mainJetParticle);
1152 tau3_num += mainJetParticle->
Pt() * dRmin;
1166 Int_t SubJetCounter;
1167 Float_t tau1_num = 0., tau2_num = 0., tau3_num = 0., tau_den = 0., dR2hardest = 0., dPhi2hardest = 0.;
1169 AliEmcalJet *subJet = NULL, *subJet1hardest = NULL, *subJet2hardest = NULL, *subJet3hardest = NULL;
1171 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1172 Double_t dVtx[3]={vert->GetX(),vert->GetY(),vert->
GetZ()};
1179 if(!(Reclusterer->AliEmcalJetFinder::Filter(mainJet, jetCont, dVtx)))
continue;
1181 if(0 >= SubJetCounter)
continue;
1182 ordered =
JetHard(Reclusterer);
1183 if(NULL == ordered)
continue;
1184 for (
Int_t i=0; i<SubJetCounter; i++){
1185 subJet = Reclusterer->
GetJet(ordered[i]);
1186 cout<<
"SubJet: "<<i+1<<
"/"<<SubJetCounter<<
" | subJetPt/JetPt: "<<subJet->
Pt()<<
"/"<<mainJet->
Pt()<<endl;
1188 tau_den =
TauDen(mainJet, jetContNb);
1189 if (tau_den <= 0.)
continue;
1190 shape[0] = mainJet->
Pt();
1191 subJet1hardest = Reclusterer->
GetJet(ordered[SubJetCounter - 1]);
1192 if (NULL == subJet1hardest)
continue;
1193 tau1_num =
Tau1Num(mainJet,subJet1hardest,jetContNb);
1195 if (1 == SubJetCounter) {
1196 if (tau1_num == 0.)
continue;
1197 shape[1] = tau1_num/tau_den;
1203 else if (2 == SubJetCounter) {
1204 subJet2hardest = Reclusterer->
GetJet(ordered[SubJetCounter - 2]);
1205 if (NULL == subJet2hardest)
continue;
1206 tau2_num =
Tau2Num(mainJet,subJet1hardest,subJet2hardest,jetContNb);
1207 dR2hardest =
R_distance(subJet1hardest,subJet2hardest);
1208 dPhi2hardest = TMath::Abs(
RelativePhi(subJet1hardest->Phi(),subJet2hardest->Phi()));
1209 if (tau1_num == 0. || tau2_num == 0.)
continue;
1210 shape[1] = tau1_num/tau_den;
1211 shape[2] = tau2_num/tau_den;
1213 shape[4] = dR2hardest;
1214 shape[5] = dPhi2hardest;
1216 else if (SubJetCounter > 2) {
1217 subJet2hardest = Reclusterer->
GetJet(ordered[SubJetCounter - 2]);
1218 if(NULL == subJet2hardest)
continue;
1219 subJet3hardest = Reclusterer->
GetJet(ordered[SubJetCounter - 3]);
1220 if(NULL == subJet3hardest)
continue;
1221 tau2_num =
Tau2Num(mainJet,subJet1hardest,subJet2hardest,jetContNb);
1222 tau3_num =
Tau3Num(mainJet,subJet1hardest,subJet2hardest,subJet3hardest,jetContNb);
1223 dR2hardest =
R_distance(subJet1hardest,subJet2hardest);
1224 dPhi2hardest = TMath::Abs(
RelativePhi(subJet1hardest->Phi(),subJet2hardest->Phi()));
1225 if (tau1_num == 0. || tau2_num == 0. || tau3_num == 0.)
continue;
1226 shape[1] = tau1_num/tau_den;
1227 shape[2] = tau2_num/tau_den;
1228 shape[3] = tau3_num/tau_den;
1229 shape[4] = dR2hardest;
1230 shape[5] = dPhi2hardest;
Float_t * N_subjettiness(AliEmcalJet *mainJet, Int_t jetContNb)
Bool_t RetrieveEventObjects()
Retrieve common objects from event.
Float_t fMinFractionShared
void SetRadius(Double_t val)
Float_t Circularity(AliEmcalJet *jet, Int_t jetContNb)
Float_t GetJetMass(AliEmcalJet *jet, Int_t jetContNb)
void Terminate(Option_t *option)
void SetJetMinPt(Double_t val)
Double_t GetSecondOrderSubtractedSigma2() const
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Double_t GetSecondOrderSubtractedConstituent() const
Float_t GetPythiaEventWeight() const
Double_t RelativePhiFancy(Double_t mphi, Double_t vphi)
Float_t Tau2Num(AliEmcalJet *jet, AliEmcalJet *subJet1hardest, AliEmcalJet *subJet2hardest, Int_t jetContNb)
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.
Double_t GetSecondOrderSubtractedpTD() const
Bool_t RetrieveEventObjects()
Float_t GetJetAngularity(AliEmcalJet *jet, Int_t jetContNb)
Bool_t FillHistograms()
Function filling histograms.
Float_t GetJetpTD(AliEmcalJet *jet, Int_t jetContNb)
Float_t * fSubstructureVar
TH2F * fhTau2OverTau1vsJetPt
Container for particles within the EMCAL framework.
Int_t TrackAt(Int_t idx) const
Float_t Tau1Num(AliEmcalJet *jet, AliEmcalJet *subJet1hardest, Int_t jetContNb)
UShort_t GetNumberOfTracks() const
TString kData
Declare data MC or deltaAOD.
Float_t LeSub(AliEmcalJet *jet, Int_t jetContNb)
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
TH2F * fhdPhiTrigVSjetPtNOCUT
Double_t GetSecondOrderSubtractedLeSub() const
AliParticleContainer * GetParticleContainer() const
Float_t GetJetLeSub(AliEmcalJet *jet, Int_t jetContNb)
void SetJetAlgorithm(Int_t val)
Float_t GetJetCircularity(AliEmcalJet *jet, Int_t jetContNb)
JetShapeType fJetShapeType
Float_t * fHadronTriggerVar
Double_t Minimum(Double_t x, Double_t y)
Double_t GetSecondOrderSubtractedAngularity() const
TH3F * fhTau1vsTau2vsTau3
Double_t fCent
!event centrality
Double_t GetSecondOrderSubtracted() const
Byte_t GetTrackType() const
Float_t Tau3Num(AliEmcalJet *jet, AliEmcalJet *subJet1hardest, AliEmcalJet *subJet2hardest, AliEmcalJet *subJet3hardest, Int_t jetContNb)
Double_t GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz) const
AliEmcalJet * GetNextAcceptJet()
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)
TH3F * fhdPhiPartVSjetPtVSPartPt
AliEmcalJet * GetJet(Int_t index)
virtual ~AliAnalysisTaskEmcalMissingEnergy()
Double_t R_distance(Double_t phi1, Double_t eta1, Double_t phi2, Double_t eta2)
Float_t TauDen(AliEmcalJet *mainJet, Int_t jetContNb)
AliAnalysisTaskEmcalMissingEnergy()
Float_t GetSigma2(AliEmcalJet *jet, Int_t jetContNb)
Double_t RelativePhi(Double_t mphi, Double_t vphi)
AliEmcalList * fOutput
!output list
Float_t GetJetNumberOfConstituents(AliEmcalJet *jet, Int_t jetContNb)
Int_t * JetHard(AliEmcalJetFinder *finder)
Double_t GetSecondOrderSubtractedCircularity() const
Int_t SelectTrigger(Float_t minpT, Float_t maxpT)
Store some informaion about a Pythia eventThis class is used to store some information about a Pythia...
void SetMakeGeneralHistograms(Bool_t g)
Float_t Tau1Num_full(AliEmcalJet *mainJet, AliEmcalJetFinder *finder, Int_t jetContNb)
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
const AliEmcalPythiaInfo * GetPythiaInfo() const
Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
Declaration of class AliEmcalPythiaInfo.
void UserCreateOutputObjects()
Main initialization function on the worker.
AliEmcalJetShapeProperties * GetShapeProperties() const
Float_t Angularity(AliEmcalJet *jet, Int_t jetContNb)
Float_t Sigma2(AliEmcalJet *jet, Int_t jetContNb)
Float_t PTD(AliEmcalJet *jet, Int_t jetContNb)
Container for jet within the EMCAL jet framework.
std::vector< int > GetPtSortedTrackConstituentIndexes(TClonesArray *tracks) const
AliEmcalJet * GetJet(Int_t i) const
void UserCreateOutputObjects()