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 "AliAODHandler.h"
36 #include "AliAODEvent.h"
37 #include "AliMCEvent.h"
38 #include "AliAnalysisManager.h"
43 #include "AliAODInputHandler.h"
44 #include "AliPIDResponse.h"
45 #include "AliCFContainer.h"
46 #include "AliCFManager.h"
47 #include "AliMultiEventInputHandler.h"
48 #include "AliKFParticle.h"
49 #include "AliKFVertex.h"
51 #include "AliAODEvent.h"
74 fMinFractionShared(0),
77 fJetSelection(kInclusive),
83 fangWindowRecoil(0.6),
90 fOneConstSelectOn(kFALSE),
97 fAssITSrefitCut(kTRUE),
120 fnULSmLSpairsPerElectron(0),
124 fnElecOverPartPerJet(0),
127 fnIncSubPhotElecPerJet(0),
129 fnTrueHFElecPerJet(0),
132 fTreeObservableTagging(0)
135 for(
Int_t i=0;i<17;i++){
137 SetMakeGeneralHistograms(kTRUE);
138 DefineOutput(1, TList::Class());
139 DefineOutput(2, TTree::Class());
158 fMinFractionShared(0),
159 fJetShapeType(
kData),
160 fJetShapeSub(kNoSub),
161 fJetSelection(kInclusive),
162 fPtThreshold(-9999.),
167 fangWindowRecoil(0.6),
171 fCentSelectOn(kTRUE),
174 fOneConstSelectOn(kFALSE),
181 fAssITSrefitCut(kTRUE),
204 fnULSmLSpairsPerElectron(0),
208 fnElecOverPartPerJet(0),
211 fnIncSubPhotElecPerJet(0),
213 fnTrueHFElecPerJet(0),
216 fTreeObservableTagging(0)
220 for(
Int_t i=0;i<17;i++){
224 DefineOutput(1, TList::Class());
225 DefineOutput(2, TTree::Class());
242 Bool_t oldStatus = TH1::AddDirectoryStatus();
243 TH1::AddDirectory(kFALSE);
245 fh2ResponseUW=
new TH2F(
"fh2ResponseUW",
"fh2ResponseUW", 100, 0, 200, 100, 0, 200);
247 fh2ResponseW=
new TH2F(
"fh2ResponseW",
"fh2ResponseW", 100, 0, 200, 100, 0, 200);
249 fPhiJetCorr6=
new TH2F(
"fPhiJetCorr6",
"fPhiJetCorr6", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
251 fEtaJetCorr6=
new TH2F(
"fEtaJetCorr6",
"fEtaJetCorr6", 50, -1.5, 1.5, 50, -1.5, 1.5);
254 fPhiJetCorr7=
new TH2F(
"fPhiJetCorr7",
"fPhiJetCorr7", 50, 0, 2*TMath::Pi(), 50, 0, 2*TMath::Pi());
256 fEtaJetCorr7=
new TH2F(
"fEtaJetCorr7",
"fEtaJetCorr7", 50, -1.5, 1.5, 50, -1.5, 1.5);
259 fPtJetCorr=
new TH2F(
"fPtJetCorr",
"fPtJetCorr", 100, 0, 200, 100, 0, 200);
261 fPtJet=
new TH1F(
"fPtJet",
"fPtJet", 100, 0, 200);
264 fhpTjetpT=
new TH2F(
"fhpTjetpT",
"fhpTjetpT", 200, 0, 200, 200, 0, 200);
266 fhPt=
new TH1F(
"fhPt",
"fhPt", 200, 0, 200);
268 fhPhi=
new TH1F(
"fhPhi",
"fhPhi", 100, -TMath::Pi(), TMath::Pi());
271 fNbOfConstvspT=
new TH2F(
"fNbOfConstvspT",
"fNbOfConstvspT", 100, 0, 100, 200, 0, 200);
274 fnTPCnTOFnocut=
new TH2F(
"fnTPCnTOFnocut",
"fnTPCnTOFnocut", 200, -10, 10, 200, -10, 10);
277 fnTPCnocut=
new TH2F(
"fnTPCnocut",
"fnTPCnocut", 50, 0, 5, 200, -10, 10);
280 fnTOFnocut=
new TH2F(
"fnTOFnocut",
"fnTOFnocut", 50, 0, 5, 200, -10, 10);
283 fnTPCcut=
new TH2F(
"fnTPCcut",
"fnTPCcut", 50, 0, 5, 200, -10, 10);
289 fInvmassLS =
new TH2F(
"fInvmassLS",
"fInvmassLS", 50, 0, 5, 250, 0, 0.5);
292 fInvmassULS=
new TH2F(
"fInvmassULS",
"fInvmassULS", 50, 0, 5, 250, 0, 0.5);
317 fPi0Pt =
new TH2F(
"fPi0Pt",
"fPi0Pt",4,0,4,100,0,50);
320 fEtaPt =
new TH2F(
"fEtaPt",
"fEtaPt",4,0,4,100,0,50);
331 THnSparse *hn =
dynamic_cast<THnSparse*
>(
fOutput->At(i));
336 TH1::AddDirectory(oldStatus);
343 fShapesVarNames[0] =
"partonCode";
344 fShapesVarNames[1] =
"ptJet";
345 fShapesVarNames[2] =
"ptDJet";
346 fShapesVarNames[3] =
"mJet";
348 fShapesVarNames[4] =
"angularity";
349 fShapesVarNames[5] =
"circularity";
350 fShapesVarNames[6] =
"lesub";
351 fShapesVarNames[7] =
"coronna";
353 fShapesVarNames[8] =
"ptJetMatch";
354 fShapesVarNames[9] =
"ptDJetMatch";
355 fShapesVarNames[10] =
"mJetMatch";
357 fShapesVarNames[11] =
"angularityMatch";
358 fShapesVarNames[12] =
"circularityMatch";
359 fShapesVarNames[13] =
"lesubMatch";
360 fShapesVarNames[14] =
"coronnaMatch";
361 fShapesVarNames[15]=
"weightPythia";
363 fShapesVarNames[16]=
"rhoVal";
364 fShapesVarNames[17]=
"rhoMassVal";
365 fShapesVarNames[18]=
"ptUnsub";
375 delete [] fShapesVarNames;
385 printf(
"ERROR: fAOD not available\n");
389 fVevent =
dynamic_cast<AliVEvent*
>(InputEvent());
391 printf(
"ERROR: fVEvent not available\n");
399 fMCarray =
dynamic_cast<TClonesArray*
>(
fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
400 fMCheader =
dynamic_cast<AliAODMCHeader*
>(
fAOD->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
407 AliGenEventHeader* gh=(AliGenEventHeader*)lh->At(0);
408 NpureMC = gh->NProduced();
414 Bool_t isPrimary = kFALSE, isFromLMdecay = kTRUE, isFromHFdecay=kTRUE;
418 for (
Int_t iParticle = 0; iParticle < nParticles; iParticle++) {
419 AliAODMCParticle* particle = (AliAODMCParticle*)
fMCarray->At(iParticle);
420 int fPDG = particle->GetPdgCode();
421 double pTMC = particle->Pt();
424 if(iParticle>=NpureMC)iEnhance = kTRUE;
427 if (TMath::Abs(etaMC)>1.2)
continue;
434 if(fPDG==111)
fPi0Pt->Fill(iEnhance,pTMC);
435 if(fPDG==221)
fEtaPt->Fill(iEnhance,pTMC);
437 if (!isFromHFdecay && !isFromLMdecay){
438 if(fPDG==111)
fPi0Pt->Fill(iEnhance+2,pTMC);
439 if(fPDG==221)
fEtaPt->Fill(iEnhance+2,pTMC);
459 AliAODTrack *triggerHadron = 0x0;
466 if (triggerHadronLabel==-99999) {
481 TClonesArray *TrackArray = NULL;
482 TClonesArray *TrackArrayMC = NULL;
484 else TrackArray = PartCont->GetArray();
486 else triggerHadron =
static_cast<AliAODTrack*
>(TrackArray->At(triggerHadronLabel));
490 if (!triggerHadron) {
501 fhPt->Fill(triggerHadron->Pt());
507 nVertices =
fAOD->GetNumberOfVertices();
508 Double_t listofmotherkink[nVertices];
509 Int_t nMotherKink = 0;
510 for(
Int_t ivertex=0; ivertex < nVertices; ivertex++) {
511 AliAODVertex *vertex =
fAOD->GetVertex(ivertex);
512 if(!vertex)
continue;
513 if(vertex->GetType()==AliAODVertex::kKink) {
514 AliAODTrack *mother = (AliAODTrack *) vertex->GetParent();
515 if(!mother)
continue;
516 Int_t idmother = mother->GetID();
517 listofmotherkink[nMotherKink] = idmother;
526 Float_t rhoVal=0, rhoMassVal = 0.;
529 jetCont->ResetCurrentID();
534 Printf(
"%s: Could not retrieve rho %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoName().Data());
535 }
else rhoVal = rhoParam->GetVal();
539 Printf(
"%s: Could not retrieve rho_m %s (some histograms will be filled with zero)!", GetName(), jetCont->
GetRhoMassName().Data());
540 }
else rhoMassVal = rhomParam->GetVal();
549 Int_t ifound=0, jfound=0;
550 Int_t ilab=-1, jlab=-1;
580 jetUS = jetContUS->
GetJet(i);
583 if(ifound==1) ilab = i;
586 if(ilab==-1)
continue;
587 jetUS=jetContUS->
GetJet(ilab);
593 Printf(
"jet2 does not exist, returning");
601 Printf(
"jet3 does not exist, returning");
630 jetUS = jetContUS->
GetJet(i);
633 if(ifound==1) ilab = i;
636 if(ilab==-1)
continue;
637 jetUS=jetContUS->
GetJet(ilab);
641 Printf(
"jet2 does not exist, returning");
647 jet3 = jetContPart->
GetJet(j);
651 if(jfound==1) jlab = j;
654 if(jlab==-1)
continue;
655 jet3=jetContPart->
GetJet(jlab);
657 Printf(
"jet3 does not exist, returning");
663 Printf(
"jet3 does not exist, returning");
682 Float_t dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
692 dRp1 = TMath::Sqrt(jp1 * jp1 + detap1 * detap1);
735 Float_t ptMatch=0., ptDMatch=0., massMatch=0., angulMatch=0.,circMatch=0., lesubMatch=0., coronnaMatch=0;
797 Int_t nInclusiveElectrons = 0, nPhotonicElectrons = 0, nTrueElectronsMC, nTrueHFElecMC;
798 GetNumberOfElectrons(jet1, 0,nMotherKink,listofmotherkink,nInclusiveElectrons,nPhotonicElectrons);
840 AliVParticle *vp1 = 0x0;
841 Int_t nIE=0, nPairs=0, nPE=0, sub = -1;
850 printf(
"ERROR: pid response not available\n");
857 Printf(
"AliVParticle associated to constituent not found");
861 AliVTrack *vtrack =
dynamic_cast<AliVTrack*
>(vp1);
862 AliAODTrack *track =
dynamic_cast<AliAODTrack*
>(vtrack);
865 Bool_t passTrackCut = kFALSE;
867 if (!passTrackCut)
continue;
871 Double_t p=-9., fTPCnSigma=-99., fTOFnSigma=-99.;
874 fTPCnSigma =
fpidResponse->NumberOfSigmasTPC(track, AliPID::kElectron);
875 fTOFnSigma =
fpidResponse->NumberOfSigmasTOF(track, AliPID::kElectron);
904 AliVParticle *vp1 = 0x0;
907 Bool_t isFromHFdecay=kFALSE;
915 Printf(
"AliVParticle associated to constituent not found");
919 AliVTrack *vtrack =
dynamic_cast<AliVTrack*
>(vp1);
920 AliAODTrack *track =
dynamic_cast<AliAODTrack*
>(vtrack);
927 isFromHFdecay=kFALSE;
931 Int_t label = track->GetLabel();
937 if (TMath::Abs(partPDG)==11){
941 if (isFromHFdecay) nHFE++;
962 ntracks =
fVevent->GetNumberOfTracks();
968 for(
Int_t jTracks = 0; jTracks < ntracks; jTracks++){
970 AliVParticle* Vassotrack =
fVevent->GetTrack(jTracks);
973 printf(
"ERROR: Could not receive associated track %d\n", jTracks);
976 AliAODTrack *trackAsso =
dynamic_cast<AliAODTrack*
>(Vassotrack);
977 if(!trackAsso)
continue;
979 if((track->GetID())==(trackAsso->GetID()))
continue;
982 Bool_t passAssoTrackCut = kFALSE;
984 if (!passAssoTrackCut)
continue;
987 Double_t p=-9.,pt=-9.,eta =-9.,phi=-9.;
994 charge = track->Charge();
998 Double_t pAsso=-9.,ptAsso=-9.,etaAsso =-9.,fITSnSigmaAsso=-9.,fTPCnSigmaAsso=-9.,phiAsso=-9.;
999 Int_t chargeAsso = 0;
1001 ptAsso = trackAsso->Pt();
1002 pAsso = trackAsso->P();
1003 phiAsso = trackAsso->Phi();
1004 etaAsso = trackAsso->Eta();
1005 chargeAsso = trackAsso->Charge();
1010 fITSnSigmaAsso =
fpidResponse->NumberOfSigmasITS(trackAsso, AliPID::kElectron);
1011 fTPCnSigmaAsso =
fpidResponse->NumberOfSigmasTPC(trackAsso, AliPID::kElectron);
1013 if(TMath::Abs(fTPCnSigmaAsso)>3)
continue;
1016 Bool_t fFlagLS=kFALSE, fFlagULS=kFALSE;
1017 Double_t openingAngle = -999.,
mass=999., width = -999;
1020 if(charge>0) fPDGe1 = -11;
1021 if(chargeAsso>0) fPDGe2 = -11;
1023 if(charge == chargeAsso) fFlagLS = kTRUE;
1024 if(charge != chargeAsso) fFlagULS = kTRUE;
1026 AliKFParticle::SetField(
fVevent->GetMagneticField());
1027 AliKFParticle ge1(*track, fPDGe1);
1028 AliKFParticle ge2(*trackAsso, fPDGe2);
1029 AliKFParticle recg(ge1, ge2);
1031 if(recg.GetNDF()<1)
continue;
1032 Double_t chi2recg = recg.GetChi2()/recg.GetNDF();
1033 if(TMath::Sqrt(TMath::Abs(chi2recg))>3.)
continue;
1035 openingAngle = ge1.GetAngle(ge2);
1038 Int_t MassCorrect=-9;
1039 MassCorrect = recg.GetMass(
mass,width);
1056 sub = nULSpairs-nLSpairs;
1067 Bool_t isHFdecay = kFALSE;
1070 Int_t idMother = particle->GetMother();
1072 AliAODMCParticle* mother = (AliAODMCParticle*)
fMCarray->At(idMother);
1073 Int_t motherPDG = TMath::Abs(mother->GetPdgCode());
1076 if((motherPDG % 1000) / 100 == 4) isHFdecay = kTRUE;
1077 if(motherPDG / 1000 == 4) isHFdecay = kTRUE;
1080 if((motherPDG % 1000) / 100 == 5) isHFdecay = kTRUE;
1081 if(motherPDG / 1000 == 5) isHFdecay = kTRUE;
1100 Bool_t isLMdecay = kFALSE;
1103 Int_t idMother = particle->GetMother();
1105 AliAODMCParticle* mother = (AliAODMCParticle*)
fMCarray->At(idMother);
1106 Int_t motherPDG = TMath::Abs(mother->GetPdgCode());
1108 if(motherPDG == 111 || motherPDG == 221 || motherPDG==223 || motherPDG==333 || motherPDG==331 ||
1109 motherPDG==113 || motherPDG==213 || motherPDG==313 || motherPDG==323) isLMdecay = kTRUE;
1118 Bool_t isprimary = kFALSE;
1120 Int_t idMother = particle->GetMother();
1121 if (idMother==-1) isprimary = kTRUE;
1135 AliVParticle *vp1 = 0x0;
1140 Printf(
"AliVParticle associated to constituent not found");
1145 Double_t dr2 = (vp1->Eta()-jet->
Eta())*(vp1->Eta()-jet->
Eta()) + dphi*dphi;
1147 num=num+vp1->Pt()*dr;
1181 TClonesArray *TracksArray = NULL;
1182 TClonesArray *TracksArrayMC = NULL;
1185 else TracksArray = PartCont->GetArray();
1188 if(!PartContMC || !TracksArrayMC)
return -2;
1191 if(!PartCont || !TracksArray)
return -2;
1195 AliAODTrack *Track = 0x0;
1199 else NTracks = TracksArray->GetEntriesFast();
1201 for(
Int_t i=0; i < NTracks; i++){
1204 if (!Track)
continue;
1205 if(TMath::Abs(Track->Eta())>0.9)
continue;
1207 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
1209 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
1213 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1214 if (!Track)
continue;
1215 if(TMath::Abs(Track->Eta())>0.9)
continue;
1216 if (Track->Pt()<0.15)
continue;
1218 Double_t dr2 = (Track->Eta()-jet->
Eta())*(Track->Eta()-jet->
Eta()) + dphi*dphi;
1220 if((dr>=0.8) && (dr<1)) sumpt=sumpt+Track->Pt();
1233 return Coronna(jet, jetContNb);
1249 AliVParticle *vp1 = 0x0;
1254 Printf(
"AliVParticle associated to constituent not found");
1258 num=num+vp1->Pt()*vp1->Pt();
1261 return TMath::Sqrt(num)/den;
1271 return PTD(jet, jetContNb);
1292 TVector3 ppJ1(pxjet, pyjet, pzjet);
1293 TVector3 ppJ3(- pxjet* pzjet, - pyjet * pzjet, pxjet * pxjet + pyjet * pyjet);
1295 TVector3 ppJ2(-pyjet, pxjet, 0);
1297 AliVParticle *vp1 = 0x0;
1302 Printf(
"AliVParticle associated to constituent not found");
1306 TVector3 pp(vp1->Px(), vp1->Py(), vp1->Pz());
1309 TVector3 pLong = pp.Dot(ppJ1) / ppJ1.Mag2() * ppJ1;
1310 TVector3 pPerp = pp - pLong;
1313 Float_t ppjX = pPerp.Dot(ppJ2);
1314 Float_t ppjY = pPerp.Dot(ppJ3);
1315 Float_t ppjT = TMath::Sqrt(ppjX * ppjX + ppjY * ppjY);
1316 if(ppjT<=0)
return 0;
1318 mxx += (ppjX * ppjX / ppjT);
1319 myy += (ppjY * ppjY / ppjT);
1320 mxy += (ppjX * ppjY / ppjT);
1325 if(sump2==0)
return 0;
1327 Double_t ele[4] = {mxx / sump2, mxy / sump2, mxy / sump2, myy / sump2};
1328 TMatrixDSym m0(2,ele);
1331 TMatrixDSymEigen m(m0);
1333 TMatrixD evecm = m.GetEigenVectors();
1334 eval = m.GetEigenValues();
1338 if (eval[0] < eval[1]) jev = 1;
1341 evec0 = TMatrixDColumn(evecm, jev);
1344 TVector2 evec(compx, compy);
1346 if(jev==1) circ=2*eval[0];
1347 if(jev==0) circ=2*eval[1];
1378 AliVParticle *vp1 = 0x0;
1379 AliVParticle *vp2 = 0x0;
1380 std::vector<int> ordindex;
1385 if(ordindex.size()<2)
return -1;
1389 Printf(
"AliVParticle associated to Leading constituent not found");
1395 Printf(
"AliVParticle associated to Subleading constituent not found");
1415 return LeSub(jet, jetContNb);
1444 AliVParticle *vp1 = 0x0;
1449 Printf(
"AliVParticle associated to constituent not found");
1457 mxx += ppt*ppt*deta*deta;
1458 myy += ppt*ppt*dphi*dphi;
1459 mxy -= ppt*ppt*deta*TMath::Abs(dphi);
1465 if(sump2==0)
return 0;
1467 Double_t ele[4] = {mxx , mxy , mxy , myy };
1468 TMatrixDSym m0(2,ele);
1471 TMatrixDSymEigen m(m0);
1473 TMatrixD evecm = m.GetEigenVectors();
1474 eval = m.GetEigenValues();
1478 if (eval[0] < eval[1]) jev = 1;
1481 evec0 = TMatrixDColumn(evecm, jev);
1484 TVector2 evec(compx, compy);
1486 if(jev==1) sig=TMath::Sqrt(TMath::Abs(eval[0])/sump2);
1487 if(jev==0) sig=TMath::Sqrt(TMath::Abs(eval[1])/sump2);
1501 return Sigma2(jet, jetContNb);
1521 TClonesArray *TracksArray = NULL;
1522 TClonesArray *TracksArrayMC = NULL;
1525 else TracksArray = PartCont->GetArray();
1528 if(!PartContMC || !TracksArrayMC)
return -99999;
1531 if(!PartCont || !TracksArray)
return -99999;
1535 AliAODTrack *Track = 0x0;
1540 Int_t triggers[100];
1541 for (
Int_t iTrigger=0; iTrigger<100; iTrigger++) triggers[iTrigger] = 0;
1545 else NTracks = TracksArray->GetEntriesFast();
1547 for(
Int_t i=0; i < NTracks; i++){
1550 if (!Track)
continue;
1551 if(TMath::Abs(Track->Eta())>0.9)
continue;
1552 if (Track->Pt()<0.15)
continue;
1553 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1560 if((Track = static_cast<AliAODTrack*>(PartCont->
GetAcceptTrack(i)))){
1561 if (!Track)
continue;
1562 if(TMath::Abs(Track->Eta())>0.9)
continue;
1563 if (Track->Pt()<0.15)
continue;
1564 if ((Track->Pt() >= minpT) && (Track->Pt()< maxpT)) {
1573 if (iTT == 0)
return -99999;
1574 Int_t nbRn = 0, index = 0 ;
1575 TRandom3* random =
new TRandom3(0);
1576 nbRn = random->Integer(iTT);
1577 index = triggers[nbRn];
1586 if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
1587 else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
1588 if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
1589 else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
1590 double dphi = mphi-vphi;
1591 if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
1592 else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
1613 if(!ietrack->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA))
return kFALSE;
1614 if(TMath::Abs(ietrack->Eta())>0.8)
return kFALSE;
1615 if(ietrack->GetTPCNcls() <
fTPCnCut)
return kFALSE;
1616 if (ietrack->GetITSNcls() <
fITSncut)
return kFALSE;
1617 if(!ietrack->IsOn(AliAODTrack::kITSrefit))
return kFALSE;
1618 if(!ietrack->IsOn(AliAODTrack::kTPCrefit))
return kFALSE;
1619 if(!(ietrack->HasPointOnITSLayer(0) && ietrack->HasPointOnITSLayer(1)))
return kFALSE;
1620 if ((ietrack->Pt()<0.5) || (ietrack->Pt()>4))
return kFALSE;
1622 Bool_t kinkmotherpass = kTRUE;
1623 for(
Int_t kinkmother = 0; kinkmother < nMother; kinkmother++) {
1624 if(ietrack->GetID() == listMother[kinkmother]) {
1625 kinkmotherpass = kFALSE;
1629 if(!kinkmotherpass)
return kFALSE;
1631 Double_t d0z0[2]={-999,-999}, cov[3];
1633 if(ietrack->PropagateToDCA(pVietx,
fVevent->GetMagneticField(), 20., d0z0, cov))
1634 if(TMath::Abs(d0z0[0]) >
fDcaXYcut || TMath::Abs(d0z0[1]) >
fDcaZcut)
return kFALSE;
1644 if(!aetrack->TestFilterMask(AliAODTrack::kTrkTPCOnly))
return kFALSE;
1645 if(aetrack->Pt() <
fAssPtCut)
return kFALSE;
1646 if(TMath::Abs(aetrack->Eta())>0.9)
return kFALSE;
1647 if(aetrack->GetTPCNcls() <
fAssTPCnCut)
return kFALSE;
1648 if (
fAssITSrefitCut && !(aetrack->GetStatus()&AliAODTrack::kITSrefit))
return kFALSE;
1649 if(!(aetrack->GetStatus()&AliAODTrack::kTPCrefit))
return kFALSE;
Float_t Angularity(AliEmcalJet *jet, Int_t jetContNb)
TClonesArray * fMCarray
MC particle.
Double_t GetFirstOrderSubtractedAngularity() const
Float_t GetJetLeSub(AliEmcalJet *jet, Int_t jetContNb)
Bool_t IsFromHFdecay(AliAODMCParticle *particle)
const TString & GetRhoName() const
Double_t GetSecondOrderSubtractedSigma2() const
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.
Bool_t FillHistograms()
Function filling histograms.
Float_t GetPartonEta6() const
AliEmcalJet * ClosestJet() const
AliJetContainer * GetJetContainer(Int_t i=0) const
Float_t GetPartonEta7() const
Double_t GetSecondOrderSubtractedConstituent() const
Float_t GetPythiaEventWeight() const
Container with name, TClonesArray and cuts for particles.
Float_t GetPartonPhi7() const
Bool_t RetrieveEventObjects()
Retrieve common objects from event.
Int_t GetNumberOfPairs(AliAODTrack *track, const AliVVertex *pVtx, Int_t nMother, Double_t listMother[])
Bool_t PhotElecTrackCuts(const AliVVertex *pVtx, AliAODTrack *aetrack, Int_t nMother, Double_t listMother[])
Float_t Circularity(AliEmcalJet *jet, Int_t jetContNb)
Double_t GetSecondOrderSubtractedpTD() const
Bool_t RetrieveEventObjects()
Double_t GetFirstOrderSubtractedLeSub() const
AliAnalysisTaskEmcalHfeTagging()
void GetNumberOfElectrons(AliEmcalJet *jet, Int_t jetContNb, Int_t nMother, Double_t listMother[], Int_t &nIncElec, Int_t &nPhotElec)
void UserCreateOutputObjects()
Float_t GetJetCircularity(AliEmcalJet *jet, Int_t jetContNb)
Int_t GetPartonFlag7() const
Container for particles within the EMCAL framework.
Float_t Sigma2(AliEmcalJet *jet, Int_t jetContNb)
Float_t GetPartonPhi6() const
Int_t TrackAt(Int_t idx) const
Double_t GetFirstOrderSubtractedpTD() const
UShort_t GetNumberOfTracks() const
TString kData
Declare data MC or deltaAOD.
Float_t PTD(AliEmcalJet *jet, Int_t jetContNb)
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
JetSelectionType fJetSelection
Bool_t IsPrimary(AliAODMCParticle *particle)
TH2F * fnULSmLSpairsPerElectron
Float_t GetJetMass(AliEmcalJet *jet, Int_t jetContNb)
Double_t GetSecondOrderSubtractedAngularity() const
Bool_t InclElecTrackCuts(const AliVVertex *pVtx, AliAODTrack *ietrack, Int_t nMother, Double_t listMother[])
Double_t RelativePhi(Double_t mphi, Double_t vphi)
virtual AliVParticle * GetAcceptParticle(Int_t i=-1) const
Double_t fCent
!event centrality
AliVEvent * fVevent
AOD object.
Double_t GetSecondOrderSubtracted() const
TH1I * fnTrueHFElecPerJet
AliEmcalJet * GetNextAcceptJet()
void Terminate(Option_t *option)
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)
virtual ~AliAnalysisTaskEmcalHfeTagging()
Double_t GetRhoVal(Int_t i=0) const
Double_t GetFirstOrderSubtractedCircularity() const
Float_t fMinFractionShared
AliAODMCParticle * fMCparticle
stack
AliEmcalList * fOutput
!output list
Float_t GetJetCoronna(AliEmcalJet *jet, Int_t jetContNb)
Double_t GetSecondOrderSubtractedCircularity() const
AliTrackContainer * GetTrackContainer(Int_t i=0) const
Store some informaion about a Pythia eventThis class is used to store some information about a Pythia...
void SetMakeGeneralHistograms(Bool_t g)
Float_t GetJetAngularity(AliEmcalJet *jet, Int_t jetContNb)
Float_t GetSigma2(AliEmcalJet *jet, Int_t jetContNb)
virtual AliVTrack * GetAcceptTrack(Int_t i=-1) const
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
void GetNumberOfTrueElectrons(AliEmcalJet *jet, Int_t jetContNb, Int_t nMother, Double_t listMother[], Int_t &nTrueElec, Int_t &nTrueHFElec)
const AliEmcalPythiaInfo * GetPythiaInfo() const
AliAODMCHeader * fMCheader
MC array.
Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
Declaration of class AliEmcalPythiaInfo.
JetShapeType fJetShapeType
void UserCreateOutputObjects()
Main initialization function on the worker.
Double_t GetFirstOrderSubtractedSigma2() const
Bool_t IsFromLMdecay(AliAODMCParticle *particle)
TH1I * fnIncSubPhotElecPerJet
AliEmcalJetShapeProperties * GetShapeProperties() const
Int_t SelectTrigger(Float_t minpT, Float_t maxpT)
TH1F * fnElecOverPartPerJet
AliPIDResponse * fpidResponse
VEvent.
Float_t GetJetpTD(AliEmcalJet *jet, Int_t jetContNb)
const AliVVertex * spdVtx
Float_t Coronna(AliEmcalJet *jet, Int_t jetContNb)
Float_t GetPartonPt7() const
TTree * fTreeObservableTagging
Double_t GetFirstOrderSubtracted() const
Container for jet within the EMCAL jet framework.
std::vector< int > GetPtSortedTrackConstituentIndexes(TClonesArray *tracks) const
Float_t GetPartonPt6() const
Float_t GetJetNumberOfConstituents(AliEmcalJet *jet, Int_t jetContNb)
AliEmcalJet * GetJet(Int_t i) const