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"
43 #include "AliAODEvent.h"
55 fMinFractionShared(0),
56 fJetShapeType(kGenShapes),
58 fJetSelection(kInclusive),
72 fangWindowRecoil(0.6),
82 fOneConstSelectOn(kFALSE),
94 fHLundIterativeInject(0x0),
96 fTreeObservableTagging(0x0),
101 for(
Int_t i=0;i<33;i++){
103 SetMakeGeneralHistograms(kTRUE);
110 fMinFractionShared(0),
111 fJetShapeType(kGenShapes),
112 fJetShapeSub(kNoSub),
113 fJetSelection(kInclusive),
114 fPtThreshold(-9999.),
122 fAdditionalTracks(0),
125 fangWindowRecoil(0.6),
132 fCentSelectOn(kTRUE),
135 fOneConstSelectOn(kFALSE),
146 fHLundIterative(0x0),
147 fHLundIterativeInject(0x0),
149 fTreeObservableTagging(0x0),
156 for(
Int_t i=0;i<48;i++){
161 DefineOutput(1, TList::Class());
162 DefineOutput(2, TTree::Class());
187 Bool_t oldStatus = TH1::AddDirectoryStatus();
188 TH1::AddDirectory(oldStatus);
194 const char* nameoutput = GetOutputSlot(2)->GetContainer()->GetName();
201 fShapesVarNames[0] =
"partonCode";
202 fShapesVarNames[1] =
"ptJet";
203 fShapesVarNames[2] =
"ptDJet";
204 fShapesVarNames[3] =
"mJet";
205 fShapesVarNames[4] =
"nbOfConst";
206 fShapesVarNames[5] =
"angularity";
207 fShapesVarNames[6] =
"Nsubjet1kt";
208 fShapesVarNames[7] =
"Nsubjet2kt";
209 fShapesVarNames[8] =
"Nsubjet1Min";
210 fShapesVarNames[9] =
"Nsubjet2Min";
211 fShapesVarNames[10] =
"DeltaRkt";
212 fShapesVarNames[11] =
"DeltaRMin";
213 fShapesVarNames[12] =
"SDSymm";
214 fShapesVarNames[13] =
"SDDeltaR";
215 fShapesVarNames[14] =
"SDGroomedFrac";
216 fShapesVarNames[15] =
"SDGroomedN";
217 fShapesVarNames[16] =
"SDMass";
218 fShapesVarNames[17] =
"SDSymmkt";
219 fShapesVarNames[18] =
"SDDeltaRkt";
220 fShapesVarNames[19] =
"SDGroomedFrackt";
221 fShapesVarNames[20] =
"SDGroomedNkt";
222 fShapesVarNames[21] =
"SDMasskt";
223 fShapesVarNames[22] =
"SDSymmAkt";
224 fShapesVarNames[23] =
"SDDeltaRAkt";
225 fShapesVarNames[24] =
"SDGroomedFracAkt";
226 fShapesVarNames[25] =
"SDGroomedNAkt";
227 fShapesVarNames[26] =
"SDMassAkt";
228 fShapesVarNames[27] =
"SDSymmktForm";
229 fShapesVarNames[28] =
"SDDeltaRktForm";
230 fShapesVarNames[29] =
"SDGroomedFracktForm";
231 fShapesVarNames[30] =
"SDGroomedNktForm";
232 fShapesVarNames[31] =
"SDMassktForm";
233 fShapesVarNames[32] =
"SDSymmDemo";
234 fShapesVarNames[33] =
"SDDeltaRDemo";
235 fShapesVarNames[34] =
"SDGroomedFracDemo";
236 fShapesVarNames[35] =
"SDGroomedNDemo";
237 fShapesVarNames[36] =
"SDMassDemo";
238 fShapesVarNames[42] =
"SDSymmForm";
239 fShapesVarNames[43] =
"SDDeltaRForm";
240 fShapesVarNames[44] =
"SDGroomedFracForm";
241 fShapesVarNames[45] =
"SDGroomedNForm";
242 fShapesVarNames[46] =
"SDMassForm";
243 fShapesVarNames[47] =
"weightPythia";
244 fShapesVarNames[42] =
"SDSymmNoCut";
245 fShapesVarNames[43] =
"SDDeltaRNoCut";
246 fShapesVarNames[44] =
"SDGroomedFracNoCut";
247 fShapesVarNames[45] =
"SDGroomedNNoCut";
248 fShapesVarNames[46] =
"SDMassNoCut";
272 cout<<
"looping over variables"<<endl;
277 fPhiJetCorr6=
new TH2F(
"fPhiJetCorr6",
"fPhiJetCorr6", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
279 fEtaJetCorr6=
new TH2F(
"fEtaJetCorr6",
"fEtaJetCorr6", 50, -1.5, 1.5, 50, -1.5, 1.5);
282 fPhiJetCorr7=
new TH2F(
"fPhiJetCorr7",
"fPhiJetCorr7", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
284 fEtaJetCorr7=
new TH2F(
"fEtaJetCorr7",
"fEtaJetCorr7", 50, -1.5, 1.5, 50, -1.5, 1.5);
287 fPtJetCorr=
new TH2F(
"fPtJetCorr",
"fPtJetCorr", 100, 0, 200, 100, 0, 200);
289 fPtJet=
new TH1F(
"fPtJet",
"fPtJet", 100, 0, 200);
292 fhpTjetpT=
new TH2F(
"fhpTjetpT",
"fhpTjetpT", 200, 0, 200, 200, 0, 200);
294 fhPt=
new TH1F(
"fhPt",
"fhPt", 200, 0, 200);
296 fhPhi=
new TH1F(
"fhPhi",
"fhPhi", 100, -TMath::Pi(), TMath::Pi());
302 const Int_t dimSpec = 4;
303 const Int_t nBinsSpec[4] = {50,50,20,3};
304 const Double_t lowBinSpec[4] = {0.0,-10, 0,0};
305 const Double_t hiBinSpec[4] = {5.0, 0,200,3};
307 "LundIterativePlot [log(1/theta),log(z*theta),pTjet,algo]",
308 dimSpec,nBinsSpec,lowBinSpec,hiBinSpec);
313 const Int_t dimSpecb = 3;
314 const Int_t nBinsSpecb[3] = {50,50,20};
315 const Double_t lowBinSpecb[3] = {0.0,-10, 0};
316 const Double_t hiBinSpecb[3] = {5.0, 0,200};
318 "LundIterativePlotInject [log(1/theta),log(z*theta),pTjet,algo]",
319 dimSpecb,nBinsSpecb,lowBinSpecb,hiBinSpecb);
323 fNbOfConstvspT=
new TH2F(
"fNbOfConstvspT",
"fNbOfConstvspT", 100, 0, 100, 200, 0, 200);
332 delete [] fShapesVarNames;
357 AliAODTrack *triggerHadron = 0x0;
364 if (triggerHadronLabel==-99999) {
370 TClonesArray *trackArrayAn = partContAn->GetArray();
371 triggerHadron =
static_cast<AliAODTrack*
>(trackArrayAn->At(triggerHadronLabel));
373 if (!triggerHadron) {
384 fhPt->Fill(triggerHadron->Pt());
389 jetCont->ResetCurrentID();
433 Float_t dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
443 dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
455 ptSubtracted= jet1->
Pt();
515 SoftDrop(jet1,jetCont,0.002,-2.0,0);
553 AliVParticle *vp1 = 0x0;
558 Printf(
"AliVParticle associated to constituent not found");
563 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
565 num=num+vp1->Pt()*dr;
591 AliVParticle *vp1 = 0x0;
596 Printf(
"AliVParticle associated to constituent not found");
600 num=num+vp1->Pt()*vp1->Pt();
603 return TMath::Sqrt(num)/den;
613 return PTD(jet, jetContNb);
634 TVector3 ppJ1(pxjet, pyjet, pzjet);
635 TVector3 ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
637 TVector3 ppJ2(-pyjet, pxjet, 0);
639 AliVParticle *vp1 = 0x0;
644 Printf(
"AliVParticle associated to constituent not found");
648 TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
651 TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
652 TVector3 pPerp = pp - pLong;
655 Float_t ppjX = pPerp.Dot(ppJ2);
656 Float_t ppjY = pPerp.Dot(ppJ3);
657 Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
658 if(ppjT<=0)
return 0;
660 mxx += (ppjX * ppjX / ppjT);
661 myy += (ppjY * ppjY / ppjT);
662 mxy += (ppjX * ppjY / ppjT);
667 if(sump2==0)
return 0;
669 Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
670 TMatrixDSym m0(2,ele);
673 TMatrixDSymEigen m(m0);
675 TMatrixD evecm = m.GetEigenVectors();
676 eval = m.GetEigenValues();
680 if (eval[0] < eval[1]) jev = 1;
683 evec0 = TMatrixDColumn(evecm, jev);
686 TVector2 evec(compx, compy);
688 if(jev==1) circ=2*eval[0];
689 if(jev==0) circ=2*eval[1];
720 AliVParticle *vp1 = 0x0;
721 AliVParticle *vp2 = 0x0;
722 std::vector<int> ordindex;
727 if(ordindex.size()<2)
return -1;
731 Printf(
"AliVParticle associated to Leading constituent not found");
737 Printf(
"AliVParticle associated to Subleading constituent not found");
757 return LeSub(jet, jetContNb);
788 if(Reclusterer->AliEmcalJetFinder::Filter(Jet, JetCont, dVtx)){;}
802 Double_t SubJetiness_Denominator = 0;
806 if(Index==-999)
return -2;
807 SubJetiness_Numerator=(Reclusterer->
GetJet(Index)->
Pt());
808 SubJetiness_Denominator=Jet->
Pt();
809 return SubJetiness_Numerator/SubJetiness_Denominator;
821 AliVParticle *vp1 = 0x0;
826 Printf(
"AliVParticle associated to constituent not found");
831 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
836 return num/jet->
Pt();
861 Int_t ArraySize =N+1;
864 for (
Int_t i=0; i<ArraySize; i++){
865 JetSorter->SetAt(0,i);
867 for (
Int_t i=0; i<ArraySize; i++){
868 JetIndexSorter->SetAt(0,i);
872 SubJet=Reclusterer->
GetJet(i);
873 if (Type==0) SortingVariable=SubJet->
Pt();
874 else if (Type==1) SortingVariable=SubJet->
E();
875 else if (Type==2) SortingVariable=SubJet->
M();
876 for (
Int_t j=0; j<N; j++){
877 if (SortingVariable>JetSorter->GetAt(j)){
878 for (
Int_t k=N-1; k>=j; k--){
879 JetSorter->SetAt(JetSorter->GetAt(k),k+1);
880 JetIndexSorter->SetAt(JetIndexSorter->GetAt(k),k+1);
882 JetSorter->SetAt(SortingVariable,j);
883 JetIndexSorter->SetAt(i,j);
888 if (!Index)
return JetSorter->GetAt(N-1);
889 else return JetIndexSorter->GetAt(N-1);
914 AliVParticle *vp1 = 0x0;
919 Printf(
"AliVParticle associated to constituent not found");
927 mxx += ppt*ppt*deta*deta;
928 myy += ppt*ppt*dphi*dphi;
929 mxy -= ppt*ppt*deta*TMath::Abs(dphi);
935 if(sump2==0)
return 0;
937 Double_t ele[4] = {mxx , mxy , mxy , myy };
938 TMatrixDSym m0(2,ele);
941 TMatrixDSymEigen m(m0);
943 TMatrixD evecm = m.GetEigenVectors();
944 eval = m.GetEigenValues();
948 if (eval[0] < eval[1]) jev = 1;
951 evec0 = TMatrixDColumn(evecm, jev);
954 TVector2 evec(compx, compy);
956 if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
957 if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
971 return Sigma2(jet, jetContNb);
985 AliVParticle *vp1 = 0x0;
986 std::vector<int> ordindex;
996 Printf(
"AliVParticle associated to Leading constituent not found");
1000 if (nTFractions[0] <= 0.7*ptJet){
1001 nTFractions[0] += vp1->Pt();
1005 if (nTFractions[2] <= 0.8*ptJet){
1006 nTFractions[2] += vp1->Pt();
1010 if (nTFractions[4] <= 0.9*ptJet){
1011 nTFractions[4] += vp1->Pt();
1015 if (nTFractions[6] <= 0.95*ptJet){
1016 nTFractions[6] += vp1->Pt();
1054 return JetFinder->
Nsubjettiness(Jet,JetCont,dVtx,N,Algorithm,0.2,Beta,Option,0,Beta_SD,ZCut,SoftDropOn);
1066 TClonesArray *tracksArray = partCont->GetArray();
1068 if(!partCont || !tracksArray)
return -99999;
1069 AliAODTrack *track = 0x0;
1074 Int_t triggers[100];
1075 for (
Int_t iTrigger=0; iTrigger<100; iTrigger++) triggers[iTrigger] = 0;
1078 for(
Int_t iTrack=0; iTrack <= tracksArray->GetEntriesFast(); iTrack++){
1083 if (!emcPart)
continue;
1084 if(TMath::Abs(emcPart->
Eta())>0.9)
continue;
1085 if (emcPart->
Pt()<0.15)
continue;
1087 if ((emcPart->
Pt() >= minpT) && (emcPart->
Pt()< maxpT)) {
1088 trackList->Add(emcPart);
1089 triggers[iTT] = iTrack;
1094 track =
static_cast<AliAODTrack*
>(tracksArray->At(iTrack));
1095 if (!track)
continue;
1096 if(TMath::Abs(track->Eta())>0.9)
continue;
1097 if (track->Pt()<0.15)
continue;
1098 if (!(track->TestFilterBit(768)))
continue;
1100 if ((track->Pt() >= minpT) && (track->Pt()< maxpT)) {
1101 trackList->Add(track);
1102 triggers[iTT] = iTrack;
1109 if (iTT == 0)
return -99999;
1110 Int_t nbRn = 0, index = 0 ;
1111 TRandom3* random =
new TRandom3(0);
1112 nbRn = random->Integer(iTT);
1114 index = triggers[nbRn];
1123 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
1124 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
1125 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
1126 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
1127 double dphi = mphi-vphi;
1128 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
1129 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
1150 AliInfo(
"Terminate");
1151 AliAnalysisTaskSE::Terminate();
1155 AliError(
"fOutput not available");
1161 Printf(
"ERROR: fTreeObservableTagging not available");
1170 std::vector<fastjet::PseudoJet> fInputVectors;
1171 fInputVectors.clear();
1172 Double_t JetInvMass=0, PseudJetInvMass=0, TrackMom = 0, TrackEnergy = 0;
1173 fastjet::PseudoJet PseudoTracks;
1174 fastjet::PseudoJet MyJet;
1175 fastjet::PseudoJet PseudoTracksCMS;
1182 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
1183 if (!fTrk)
continue;
1184 JetInvMass += fTrk->M();
1186 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1187 TrackMom += TMath::Sqrt(TMath::Power(fTrk->Px(),2)+TMath::Power(fTrk->Py(),2)+TMath::Power(fTrk->Pz(),2));
1188 TrackEnergy += fTrk->E();
1189 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1190 PseudJetInvMass += PseudoTracks.m();
1191 fInputVectors.push_back(PseudoTracks);
1198 MyJet.reset(fJet->
Px(),fJet->
Py(),fJet->
Pz(),fJet->
E());
1206 Double_t ppx,ppy,ppz,kTscale,lim2o,lim1o;
1211 fTf1Kt=
new TF1(
"fTf1Kt",
"1/(x*x*x*x)",lim2,lim1);
1212 kTscale=
fTf1Kt->GetRandom();
1218 lim1o=kTscale/TMath::Sin(0.1);
1219 fTf1Omega=
new TF1(
"fTf1Omega",
"1/x",lim2o,lim1o);
1223 Double_t pptheta=TMath::ASin(sinpptheta);
1227 PseudoTracksCMS.reset(kTscale/TMath::Sqrt(2),kTscale/TMath::Sqrt(2),omega*TMath::Cos(pptheta),omega);
1229 fastjet::PseudoJet PseudoTracksLab=PseudoTracksCMS.boost(MyJet);
1231 fInputVectors.push_back(PseudoTracksLab);
1233 zeta=omega/fJet->
E();
1247 fastjet::JetDefinition fJetDef(fastjet::antikt_algorithm,
fJetRadius*2, static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1248 fastjet::contrib::Recluster *recluster;
1250 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1251 std::vector<fastjet::PseudoJet> fOutputJets;
1252 fOutputJets.clear();
1253 fOutputJets=fClustSeqSA.inclusive_jets(0);
1257 fastjet::contrib::SoftDrop softdrop(beta, zcut);
1259 softdrop.set_verbose_structure(kTRUE);
1260 fastjet::JetAlgorithm jetalgo(fastjet::cambridge_algorithm);
1261 if(ReclusterAlgo==2) jetalgo=fastjet::antikt_algorithm;
1262 if(ReclusterAlgo==1) jetalgo=fastjet::kt_algorithm;
1263 if(ReclusterAlgo==0) jetalgo=fastjet::cambridge_algorithm;
1265 recluster =
new fastjet::contrib::Recluster(jetalgo,1,
true);
1266 softdrop.set_reclustering(
true,recluster);
1267 fastjet::PseudoJet finaljet = softdrop(fOutputJets[0]);
1271 Int_t NGroomedBranches;
1272 SymParam=(finaljet.structure_of<fastjet::contrib::SoftDrop>().symmetry());
1273 Mu=(finaljet.structure_of<fastjet::contrib::SoftDrop>().mu());
1274 DeltaR=(finaljet.structure_of<fastjet::contrib::SoftDrop>().delta_R());
1275 NGroomedBranches=finaljet.structure_of<fastjet::contrib::SoftDrop>().dropped_count();
1276 GroomedPt=finaljet.perp();
1277 GroomedMass=finaljet.m();
1279 if(ReclusterAlgo==0){
1285 if(ReclusterAlgo==1){
1292 if(ReclusterAlgo==2){
1307 if((beta==1.5) && (zcut==0.5)){
1314 if((beta==-1) && (zcut==0.005)){
1321 if((beta==-2) && (zcut==0.005)){
1336 }
catch (fastjet::Error) {
1337 AliError(
" [w] FJ Exception caught.");
1344 if(recluster) {
delete recluster; recluster = NULL; }
1361 std::vector<fastjet::PseudoJet> fInputVectors;
1362 fInputVectors.clear();
1363 fastjet::PseudoJet PseudoTracks;
1365 double lnpt_relinject=0;
1368 double zinject,angleinject,pptheta,sinpptheta,omega;
1369 fastjet::PseudoJet MyJet;
1370 fastjet::PseudoJet PseudoTracksCMS;
1374 AliVParticle *fTrk = fJet->
TrackAt(i, fTrackCont->GetArray());
1375 if (!fTrk)
continue;
1376 PseudoTracks.reset(fTrk->Px(), fTrk->Py(), fTrk->Pz(),fTrk->E());
1377 PseudoTracks.set_user_index(fJet->
TrackAt(i)+100);
1378 fInputVectors.push_back(PseudoTracks);
1383 MyJet.reset(fJet->
Px(),fJet->
Py(),fJet->
Pz(),fJet->
E());
1391 Double_t ppx,ppy,ppz,kTscale,lim2o,lim1o;
1396 fTf1Kt=
new TF1(
"fTf1Kt",
"1/(x*x*x*x)",lim2,lim1);
1397 kTscale=
fTf1Kt->GetRandom();
1403 lim1o=kTscale/TMath::Sin(0.1);
1404 fTf1Omega=
new TF1(
"fTf1Omega",
"1/x",lim2o,lim1o);
1407 sinpptheta=kTscale/omega;
1408 pptheta=TMath::ASin(sinpptheta);
1412 PseudoTracksCMS.reset(kTscale/TMath::Sqrt(2),kTscale/TMath::Sqrt(2),omega*TMath::Cos(pptheta),omega);
1414 fastjet::PseudoJet PseudoTracksLab=PseudoTracksCMS.boost(MyJet);
1416 fInputVectors.push_back(PseudoTracksLab);
1424 fastjet::JetAlgorithm jetalgo(fastjet::antikt_algorithm);
1425 if(ReclusterAlgo==0){ xflagalgo=0.5;
1426 jetalgo=fastjet::kt_algorithm ;}
1428 if(ReclusterAlgo==1){ xflagalgo=1.5;
1429 jetalgo=fastjet::cambridge_algorithm;}
1430 if(ReclusterAlgo==2){ xflagalgo=2.5;
1431 jetalgo=fastjet::antikt_algorithm;}
1433 fastjet::JetDefinition fJetDef(jetalgo, 1., static_cast<fastjet::RecombinationScheme>(0), fastjet::BestFJ30 );
1436 fastjet::ClusterSequence fClustSeqSA(fInputVectors, fJetDef);
1437 std::vector<fastjet::PseudoJet> fOutputJets;
1438 fOutputJets.clear();
1439 fOutputJets=fClustSeqSA.inclusive_jets(0);
1441 fastjet::PseudoJet jj;
1442 fastjet::PseudoJet j1;
1443 fastjet::PseudoJet j2;
1446 while(jj.has_parents(j1,j2)){
1447 if(j1.perp() < j2.perp())
swap(j1,j2);
1448 double delta_R=j1.delta_R(j2);
1449 double z=j2.perp()/(j1.perp()+j2.perp());
1450 double y =log(1.0/delta_R);
1451 double lnpt_rel=log(z*delta_R);
1452 Double_t LundEntries[4] = {y,lnpt_rel,fOutputJets[0].perp(),xflagalgo};
1456 if(fAdditionalTracks>0 && xflagAdded>0){
1457 zinject=omega/fOutputJets[0].perp();
1458 angleinject=pptheta;
1459 cout<<
"angle"<<pptheta<<endl;
1460 yinject =log(1.0/angleinject);
1461 lnpt_relinject=log(zinject*angleinject);
1462 Double_t LundEntriesInject[3] = {yinject,lnpt_relinject,fOutputJets[0].perp()};
1466 }
catch (fastjet::Error) {
1467 AliError(
" [w] FJ Exception caught.");
void SetRadius(Double_t val)
Float_t GetSigma2(AliEmcalJet *jet, Int_t jetContNb=0)
Double_t GetFirstOrderSubtractedAngularity() const
Float_t GetJetMass(AliEmcalJet *jet, Int_t jetContNb=0)
void SetJetMinPt(Double_t val)
Double_t GetSecondOrderSubtractedSigma2() const
void RecursiveParents(AliEmcalJet *fJet, AliJetContainer *fJetCont, Int_t ReclusterAlgo)
Float_t GetPartonEta6() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Float_t GetPartonEta7() const
Double_t GetSecondOrderSubtractedConstituent() const
Double_t FjNSubJettiness(AliEmcalJet *Jet, Int_t JetContNb, Int_t N, Int_t Algorithm, Double_t Beta, Int_t Option, Double_t Beta_SD=0.0, Double_t ZCut=0.1, Int_t SoftDropOn=0)
Float_t GetPythiaEventWeight() const
Float_t GetPartonPhi7() const
JetShapeType fJetShapeType
Double_t GetSecondOrderSubtractedpTD() const
Bool_t RetrieveEventObjects()
Double_t GetFirstOrderSubtractedLeSub() const
Float_t CoreFrac(AliEmcalJet *jet, Int_t jetContNb=0)
Float_t GetJetCircularity(AliEmcalJet *jet, Int_t jetContNb=0)
THnSparse * fHLundIterativeInject
Float_t GetJetpTD(AliEmcalJet *jet, Int_t jetContNb=0)
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 GetJetCoreFrac(AliEmcalJet *jet, Int_t jetContNb=0)
Double_t Nsubjettiness(AliEmcalJet *pJet, AliJetContainer *pContJets, Double_t dVtx[3], Int_t N, Int_t Algorithm, Double_t Radius, Double_t Beta, Int_t Option=0, Int_t Measure=0, Double_t Beta_SD=0, Double_t ZCut=0.1, Int_t SoftDropOn=0)
AliParticleContainer * GetParticleContainer(Int_t i=0) const
Get particle container attached to this task.
Double_t GetSecondOrderSubtractedLeSub() const
Int_t GetPartonFlag6() const
AliParticleContainer * GetParticleContainer() const
Double_t GetFirstOrderSubtractedConstituent() const
void SetRecombSheme(Int_t val)
void SetJetAlgorithm(Int_t val)
Float_t GetJetNumberOfConstituents(AliEmcalJet *jet, Int_t jetContNb=0)
Float_t fqhat
Random number generator.
Task to store and correlate the MC shapes.
TTree * fTreeObservableTagging
! Tree with tagging variables subtracted MC or true MC or raw
Double_t RelativePhi(Double_t mphi, Double_t vphi)
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 GetSecondOrderSubtractedAngularity() const
Double_t GetSubjetFraction(AliEmcalJet *Jet, Int_t JetContNb, Double_t JetRadius, AliEmcalJetFinder *Reclusterer)
AliAnalysisTaskEmcalJetShapesMC()
AliEmcalJetFinder * Recluster(AliEmcalJet *Jet, Int_t JetContNb, Double_t JetRadius, Double_t SubJetRadius, Double_t SubJetMinPt, Int_t Algorithm, const char *Name)
Double_t fCent
!event centrality
Double_t GetSecondOrderSubtracted() const
Float_t PTD(AliEmcalJet *jet, Int_t jetContNb=0)
void SetJetMaxEta(Double_t val)
void Terminate(Option_t *option)
AliEmcalJet * GetNextAcceptJet()
TF1 * fTf1Kt
to generate omega according to BDMPS tail
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 GetJetAngularity(AliEmcalJet *jet, Int_t jetContNb=0)
Int_t SelectTrigger(Float_t minpT, Float_t maxpT)
AliEmcalJet * GetJet(Int_t index)
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
Float_t Angularity(AliEmcalJet *jet, Int_t jetContNb=0)
Bool_t FillHistograms()
Function filling histograms.
Double_t GetFirstOrderSubtractedCircularity() const
JetSelectionType fJetSelection
Bool_t RetrieveEventObjects()
Retrieve common objects from event.
AliEmcalList * fOutput
!output list
THnSparse * fHLundIterative
Double_t SubJetOrdering(AliEmcalJet *Jet, AliEmcalJetFinder *Reclusterer, Int_t N, Int_t Type, Bool_t Index)
void NTValues(AliEmcalJet *jet, Int_t jetContNb, Float_t *nTFractions)
Double_t GetSecondOrderSubtractedCircularity() const
Double_t DeltaR(const AliVParticle *part1, const AliVParticle *part2)
Float_t GetJetLeSub(AliEmcalJet *jet, Int_t jetContNb=0)
void UserCreateOutputObjects()
Store some informaion about a Pythia eventThis class is used to store some information about a Pythia...
void SetMakeGeneralHistograms(Bool_t g)
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
const AliEmcalPythiaInfo * GetPythiaInfo() const
void swap(AliEmcalContainerIndexMap< X, Y > &first, AliEmcalContainerIndexMap< X, Y > &second)
Float_t Circularity(AliEmcalJet *jet, Int_t jetContNb=0)
void SoftDrop(AliEmcalJet *fJet, AliJetContainer *fJetCont, Double_t zcut, Double_t beta, Int_t ReclusterAlgo)
Declaration of class AliEmcalPythiaInfo.
virtual ~AliAnalysisTaskEmcalJetShapesMC()
void UserCreateOutputObjects()
Main initialization function on the worker.
Double_t GetFirstOrderSubtractedSigma2() const
Float_t Sigma2(AliEmcalJet *jet, Int_t jetContNb=0)
AliEmcalJetShapeProperties * GetShapeProperties() const
Float_t GetPartonPt7() const
Float_t LeSub(AliEmcalJet *jet, Int_t jetContNb=0)
Double_t GetFirstOrderSubtracted() const
Container for jet within the EMCAL jet framework.
std::vector< int > GetPtSortedTrackConstituentIndexes(TClonesArray *tracks) const
Float_t GetPartonPt6() const