18 #include <TGeoManager.h>
19 #include <TStreamerInfo.h>
22 #include "AliMCEvent.h"
23 #include "AliAODMCHeader.h"
24 #include "AliGenPythiaEventHeader.h"
25 #include "AliGenCocktailEventHeader.h"
26 #include "AliGenHijingEventHeader.h"
27 #include "AliESDEvent.h"
28 #include "AliAODEvent.h"
29 #include "AliVTrack.h"
30 #include "AliVParticle.h"
31 #include "AliMixedEvent.h"
33 #include "AliESDVZERO.h"
34 #include "AliVCaloCells.h"
35 #include "AliAnalysisManager.h"
36 #include "AliInputEventHandler.h"
37 #include "AliAODMCParticle.h"
40 #include "AliMultSelection.h"
43 #include "AliPHOSGeoUtils.h"
44 #include "AliEMCALGeometry.h"
45 #include "AliEMCALRecoUtils.h"
52 #include "AliAODJet.h"
53 #include "AliAODJetEventBackground.h"
63 TObject(), fEventNumber(-1),
65 fFiducialCut(0x0), fCheckFidCut(kFALSE),
66 fComparePtHardAndJetPt(0), fPtHardAndJetPtFactor(0),
67 fComparePtHardAndClusterPt(0),fPtHardAndClusterPtFactor(0),
68 fCTSPtMin(0), fEMCALPtMin(0), fPHOSPtMin(0),
69 fCTSPtMax(0), fEMCALPtMax(0), fPHOSPtMax(0),
70 fUseEMCALTimeCut(1), fUseParamTimeCut(0),
71 fUseTrackTimeCut(0), fAccessTrackTOF(0),
72 fEMCALTimeCutMin(-10000), fEMCALTimeCutMax(10000),
73 fEMCALParamTimeCutMin(), fEMCALParamTimeCutMax(),
74 fTrackTimeCutMin(-10000), fTrackTimeCutMax(10000),
77 fCTSTracks(0x0), fEMCALClusters(0x0),
78 fDCALClusters(0x0), fPHOSClusters(0x0),
79 fEMCALCells(0x0), fPHOSCells(0x0),
80 fInputEvent(0x0), fOutputEvent(0x0),fMC(0x0),
81 fFillCTS(0), fFillEMCAL(0),
82 fFillDCAL(0), fFillPHOS(0),
83 fFillEMCALCells(0), fFillPHOSCells(0),
84 fRecalculateClusters(kFALSE),fCorrectELinearity(kTRUE),
85 fSelectEmbeddedClusters(kFALSE),
86 fSmearShowerShape(0), fSmearShowerShapeWidth(0), fRandom(),
88 fTrackStatus(0), fSelectSPDHitTracks(0),
89 fTrackMult(0), fTrackMultEtaCut(0.9),
90 fReadStack(kFALSE), fReadAODMCParticles(kFALSE),
91 fDeltaAODFileName(
""), fFiredTriggerClassName(
""),
93 fEventTriggerMask(0), fMixEventTriggerMask(0), fEventTriggerAtSE(0),
94 fEventTrigMinBias(0), fEventTrigCentral(0),
95 fEventTrigSemiCentral(0), fEventTrigEMCALL0(0),
96 fEventTrigEMCALL1Gamma1(0), fEventTrigEMCALL1Gamma2(0),
97 fEventTrigEMCALL1Jet1(0), fEventTrigEMCALL1Jet2(0),
98 fBitEGA(0), fBitEJE(0),
101 fTaskName(
""), fCaloUtils(0x0),
102 fWeightUtils(0x0), fEventWeight(1),
103 fMixedEvent(NULL), fNMixedEvent(0), fVertex(NULL),
104 fListMixedTracksEvents(), fListMixedCaloEvents(),
105 fLastMixedTracksEvent(-1), fLastMixedCaloEvent(-1),
106 fWriteOutputDeltaAOD(kFALSE),
107 fEMCALClustersListName(
""), fZvtxCut(0.),
108 fAcceptFastCluster(kFALSE), fRemoveLEDEvents(kFALSE),
110 fRemoveBadTriggerEvents(0), fTriggerPatchClusterMatch(1),
111 fTriggerPatchTimeWindow(), fTriggerL0EventThreshold(0),
112 fTriggerL1EventThreshold(0), fTriggerL1EventThresholdFix(0),
113 fTriggerClusterBC(0), fTriggerClusterIndex(0), fTriggerClusterId(0),
114 fIsExoticEvent(0), fIsBadCellEvent(0), fIsBadMaxCellEvent(0),
115 fIsTriggerMatch(0), fIsTriggerMatchOpenCut(),
116 fTriggerClusterTimeRecal(kTRUE), fRemoveUnMatchedTriggers(kTRUE),
117 fDoPileUpEventRejection(kFALSE), fDoV0ANDEventSelection(kFALSE),
118 fDoVertexBCEventSelection(kFALSE),
119 fDoRejectNoTrackEvents(kFALSE),
120 fUseEventsWithPrimaryVertex(kFALSE),
122 fTimeStampEventSelect(0),
123 fTimeStampEventFracMin(0), fTimeStampEventFracMax(0),
124 fTimeStampRunMin(0), fTimeStampRunMax(0),
125 fNPileUpClusters(-1), fNNonPileUpClusters(-1), fNPileUpClustersCut(3),
126 fVertexBC(-200), fRecalculateVertexBC(0),
127 fUseAliCentrality(0), fCentralityClass(
""), fCentralityOpt(0),
128 fEventPlaneMethod(
""),
129 fAcceptOnlyHIJINGLabels(0), fNMCProducedMin(0), fNMCProducedMax(0),
130 fFillInputNonStandardJetBranch(kFALSE),
131 fNonStandardJets(new TClonesArray(
"AliAODJet",100)),fInputNonStandardJetBranchName(
"jets"),
132 fFillInputBackgroundJetBranch(kFALSE),
133 fBackgroundJets(0x0),fInputBackgroundJetBranchName(
"jets"),
134 fAcceptEventsWithBit(0), fRejectEventsWithBit(0), fRejectEMCalTriggerEventsWith2Tresholds(0),
232 if(TMath::Abs(dca) < cut)
251 UInt_t trigFired = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
253 for(Int_t ibit = 0; ibit < nAccept; ibit++)
258 if(accept)
return kTRUE ;
277 UInt_t trigFired = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
279 for(Int_t ibit = 0; ibit < nReject; ibit++)
284 if(reject)
return kFALSE ;
301 AliDebug(1,Form(
"FiredTriggerClass <%s>, selected class <%s>, compare name %d",
310 AliDebug(1,
"Accepted triggered event");
334 eventType = ((AliVHeader*)
fInputEvent->GetHeader())->GetEventType();
336 AliDebug(3,Form(
"Event type %d",eventType));
346 AliDebug(1,
"Pass event species selection");
352 UInt_t isTrigger = kFALSE;
353 UInt_t isMB = kFALSE;
361 AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
362 AliInputEventHandler *inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
364 if(!inputHandler)
return kFALSE ;
369 if(!isTrigger && !isMB)
return kFALSE;
372 AliDebug(0,
"Pass uninteresting triggered events rejection in case of mixing analysis");
384 if(!okA || !okR)
return kFALSE;
386 AliDebug(1,
"Pass event bit rejection");
419 AliDebug(1,Form(
"ACCEPT triggered event? \n exotic? %d - bad cell %d - bad Max cell %d - BC %d - Matched %d\n",
428 AliDebug(1,
"Pass EMCal triggered event rejection \n");
437 AliDebug(1,Form(
"Do not count events from fast cluster, trigger name %s\n",
fFiredTriggerClassName.Data()));
453 if(reject)
return kFALSE;
455 AliDebug(1,
"Pass LED event rejection");
476 Int_t nTriggerJets = pygeh->NTriggerJets();
477 Float_t ptHard = pygeh->GetPtHard();
479 AliDebug(1,Form(
"Njets: %d, pT Hard %f",nTriggerJets, ptHard));
481 Float_t tmpjet[]={0,0,0,0};
482 for(Int_t ijet = 0; ijet< nTriggerJets; ijet++)
484 pygeh->TriggerJet(ijet, tmpjet);
485 jet =
new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
487 AliDebug(1,Form(
"jet %d; pycell jet pT %f",ijet, jet->Pt()));
492 AliInfo(Form(
"Reject jet event with : pT Hard %2.2f, pycell jet pT %2.2f, rejection factor %1.1f\n",
515 Float_t ptHard = pygeh->GetPtHard();
517 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
518 for (Int_t iclus = 0; iclus < nclusters; iclus++)
520 AliVCluster * clus =
fInputEvent->GetCaloCluster(iclus) ;
521 Float_t ecluster = clus->E();
525 AliInfo(Form(
"Reject : ecluster %2.2f, calo %d, factor %2.2f, ptHard %f",ecluster,clus->GetType(),
fPtHardAndClusterPtFactor,ptHard));
545 AliDebug(1,
"Stack is not available");
557 return fMC->Header();
561 AliInfo(
"Header is not available");
578 AliGenEventHeader * eventHeader =
fMC->GenEventHeader();
584 AliGenCocktailEventHeader *cocktail =
dynamic_cast<AliGenCocktailEventHeader *
>(eventHeader);
586 if(!cocktail) return ;
588 TList *genHeaders = cocktail->GetHeaders();
590 Int_t nGenerators = genHeaders->GetEntries();
593 for(Int_t igen = 0; igen < nGenerators; igen++)
595 AliGenEventHeader * eventHeader2 = (AliGenEventHeader*)genHeaders->At(igen) ;
596 TString name = eventHeader2->GetName();
603 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return ;
612 if( nGenerators <= 0) return ;
616 for(Int_t igen = 0; igen < nGenerators; igen++)
618 AliGenEventHeader * eventHeader =
GetAODMCHeader()->GetCocktailHeader(igen) ;
619 TString name = eventHeader->GetName();
626 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return ;
640 AliGenEventHeader * eventHeader =
fMC->GenEventHeader();
646 AliGenCocktailEventHeader *cocktail =
dynamic_cast<AliGenCocktailEventHeader *
>(eventHeader);
648 if(!cocktail)
return 0x0 ;
650 TList *genHeaders = cocktail->GetHeaders();
652 Int_t nGenerators = genHeaders->GetEntries();
655 for(Int_t igen = 0; igen < nGenerators; igen++)
657 AliGenEventHeader * eventHeader2 = (AliGenEventHeader*)genHeaders->At(igen) ;
658 TString name = eventHeader2->GetName();
662 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return eventHeader2 ;
673 if( nGenerators <= 0)
return 0x0;
677 for(Int_t igen = 0; igen < nGenerators; igen++)
679 AliGenEventHeader * eventHeader =
GetAODMCHeader()->GetCocktailHeader(igen) ;
680 TString name = eventHeader->GetName();
684 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return eventHeader ;
703 AliInfo(
"Input are not AODs");
714 AliInfo(
"Input are not AODs");
730 Int_t vertexBC=vtx->GetBC();
741 for(Int_t i = 0 ; i < ntr ; i++)
743 AliVTrack * track = (AliVTrack*) (
GetCTSTracks()->At(i));
746 ULong_t status = track->GetStatus();
747 Bool_t okTOF = (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ;
748 vertexBC = track->GetTOFBunchCrossing(bz);
749 Float_t pt = track->Pt();
754 Double_t dca[2] = {1e6,1e6};
755 Double_t covar[3] = {1e6,1e6,1e6};
756 track->PropagateToDCA(vtx,bz,100.,dca,covar);
760 if (vertexBC !=0 &&
fVertexBC != AliVTrack::kTOFBCNA)
return vertexBC;
761 else if(vertexBC == 0) bc0 = kTRUE;
765 if( bc0 ) vertexBC = 0 ;
766 else vertexBC = AliVTrack::kTOFBCNA ;
779 AliInfo(
"Cannot access stack and mcparticles at the same time, change them");
874 for(Int_t i = 0; i < 19; i++)
915 AliGenHijingEventHeader* hijingHeader =
dynamic_cast<AliGenHijingEventHeader *
> (
GetGenEventHeader());
919 if(!hijingHeader || label < 0 )
return kFALSE;
935 Int_t nprimaries =
GetStack()->GetNtrack();
937 if(label > nprimaries)
return kFALSE;
939 TParticle * mom =
GetStack()->Particle(label);
942 Int_t iParent = mom->GetFirstMother();
953 iParent = mom->GetFirstMother();
963 if(!mcparticles)
return kFALSE;
965 Int_t nprimaries = mcparticles->GetEntriesFast();
967 if(label > nprimaries)
return kFALSE;
977 AliAODMCParticle * mom = (AliAODMCParticle *) mcparticles->At(label);
980 Int_t iParent = mom->GetMother();
990 mom = (AliAODMCParticle *) mcparticles->At(iMom);
991 iParent = mom->GetMother();
1014 if( tof < minCut || tof > maxCut )
return kFALSE ;
1030 fPileUpParamSPD[2] , fPileUpParamSPD[3] , fPileUpParamSPD[4] );
1115 AliInfo(
"Input event not available, skip event analysis");
1126 if(!accept)
return kFALSE;
1128 AliDebug(1,
"Pass Event trigger selection");
1138 AliDebug(1,
"Pass Pt Hard - Jet rejection");
1144 AliDebug(1,
"Pass Pt Hard - Cluster rejection");
1153 AliESDEvent* esd =
dynamic_cast<AliESDEvent*
> (
fInputEvent);
1156 Int_t timeStamp = esd->GetTimeStamp();
1164 AliDebug(1,
"Pass Time Stamp rejection");
1179 if( TMath::Abs(
fVertex[0][0] ) < 1.e-6 &&
1180 TMath::Abs(
fVertex[0][1] ) < 1.e-6 &&
1181 TMath::Abs(
fVertex[0][2] ) < 1.e-6 )
return kFALSE;
1184 AliDebug(1,
"Pass primary vertex rejection");
1194 if(bPileup)
return kFALSE;
1196 AliDebug(1,
"Pass Pile-Up event rejection");
1203 Bool_t bV0AND = ((v0->GetV0ADecision()==1) && (v0->GetV0CDecision()==1));
1209 AliDebug(1,
"Reject event by V0AND");
1213 AliDebug(1,
"Pass V0AND event rejection");
1229 AliDebug(1,
"Pass centrality rejection");
1264 AliDebug(1,
"Pass rejection of null track events");
1271 AliDebug(1,
"Pass rejection of events with vertex at BC!=0");
1294 AliDebug(1,
"Event accepted for analysis");
1314 AliInfo(Form(
"Unknown centrality option %d, use 10, 20 or 100\n",
fCentralityOpt));
1342 AliDebug(1,Form(
"Bad EP for <Q> method : %f\n",ep));
1347 if((ep > TMath::Pi()/2 || ep < -TMath::Pi()/2))
1356 AliDebug(3,Form(
"Event plane angle %f",ep));
1382 vertex[0] =
fVertex[evtIndex][0];
1383 vertex[1] =
fVertex[evtIndex][1];
1384 vertex[2] =
fVertex[evtIndex][2];
1406 fVertex[i] =
new Double_t[3] ;
1423 AliWarning(
"NULL primary vertex");
1441 AliWarning(
"No vertex found");
1443 AliDebug(1,Form(
"Multi Event %d Vertex : %f,%f,%f",iev,
fVertex[iev][0],
fVertex[iev][1],
fVertex[iev][2]));
1457 AliDebug(1,
"Begin");
1459 Double_t pTrack[3] = {0,0,0};
1461 Int_t nTracks =
fInputEvent->GetNumberOfTracks() ;
1466 for(Int_t i = 0; i < 19; i++)
1472 Bool_t bc0 = kFALSE;
1475 for (Int_t itrack = 0; itrack < nTracks; itrack++)
1477 AliVTrack * track = (AliVTrack*)
fInputEvent->GetTrack(itrack) ;
1482 ULong_t status = track->GetStatus();
1493 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1494 Double_t tof = -1000;
1495 Int_t trackBC = -1000 ;
1501 trackBC = track->GetTOFBunchCrossing(bz);
1504 tof = track->GetTOFsignal()*1e-3;
1509 if (trackBC != 0 && trackBC != AliVTrack::kTOFBCNA)
fVertexBC = trackBC;
1510 else if(trackBC == 0) bc0 = kTRUE;
1523 fMomentum.SetPxPyPzE(pTrack[0],pTrack[1],pTrack[2],0);
1529 Float_t dcaTPC =-999;
1531 if(
fDataType ==
kAOD ) dcaTPC = ((AliAODTrack*) track)->DCA();
1536 Double_t dca[2] = {1e6,1e6};
1537 Double_t covar[3] = {1e6,1e6,1e6};
1538 Bool_t okDCA = track->PropagateToDCA(
fInputEvent->GetPrimaryVertex(),bz,100.,dca,covar);
1558 AliDebug(2,Form(
"Selected tracks pt %3.2f, phi %3.2f deg, eta %3.2f",
1574 AliDebug(1,Form(
"AOD entries %d, input tracks %d, pass status %d, multipliticy %d",
fCTSTracks->GetEntriesFast(), nTracks, nstatus,
fTrackMult));
1592 vindex =
fMixedEvent->EventIndexForCaloCluster(iclus);
1597 AliDebug(2,Form(
"Input cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1619 if(
GetCaloUtils()->IsRecalculationOfClusterPositionOn())
1627 if(
GetCaloUtils()->GetEMCALRecoUtils()->IsTimeRecalibrationOn())
1629 Double_t tof = clus->GetTOF();
1658 AliDebug(2,Form(
"Bad cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1671 Bool_t shared = kFALSE;
1674 AliDebug(2,Form(
"Masked collumn: cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1678 if(
GetCaloUtils()->MaskFrameCluster(iSupMod, ieta))
return;
1683 if(clus->GetNLabels()==0 || clus->GetLabel() < 0)
return;
1697 AliDebug(5,Form(
"Correct Non Lin: Old E %3.2f, New E %3.2f",
1702 if(
GetCaloUtils()->GetEMCALRecoUtils()->IsClusterEnergySmeared() )
1707 AliDebug(5,Form(
"Smear energy: Old E %3.2f, New E %3.2f",clus->E(),rdmEnergy));
1709 clus->SetE(rdmEnergy);
1713 Double_t tof = clus->GetTOF()*1e9;
1715 Int_t bc = TMath::Nint(tof/50) + 9;
1722 AliDebug(2,Form(
"Too low energy cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1737 AliDebug(2,Form(
"Out of time window E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f, time %e",
1747 clus->SetID(iclus) ;
1750 Bool_t bEMCAL = kFALSE;
1751 Bool_t bDCAL = kFALSE;
1763 AliDebug(2,Form(
"Selected clusters (EMCAL%d, DCAL%d), E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1771 AliDebug(2,Form(
"Smear shower shape - Original: %2.4f\n", clus->GetM02()));
1799 AliDebug(1,
"Begin");
1809 for(Int_t i = 0; i < 19; i++)
1818 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
1819 for (Int_t iclus = 0; iclus < nclusters; iclus++)
1821 AliVCluster * clus = 0;
1822 if ( (clus =
fInputEvent->GetCaloCluster(iclus)) )
1824 if (clus->IsEMCAL())
1837 TClonesArray * clusterList = 0x0;
1854 Int_t nclusters = clusterList->GetEntriesFast();
1855 for (Int_t iclus = 0; iclus < nclusters; iclus++)
1857 AliVCluster * clus =
dynamic_cast<AliVCluster*
> (clusterList->At(iclus));
1860 else AliWarning(
"Null cluster in list!");
1868 for(Int_t i = 0; i < 19; i++)
1874 for (Int_t iclus = 0; iclus <
fInputEvent->GetNumberOfCaloClusters(); iclus++)
1876 AliVCluster * clus = 0;
1878 if ( (clus =
fInputEvent->GetCaloCluster(iclus)) )
1880 if (clus->IsEMCAL())
1885 Double_t tof = clus->GetTOF();
1899 Int_t bc = TMath::Nint(tof/50) + 9;
1935 AliDebug(1,
"Begin");
1938 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
1939 for (Int_t iclus = 0; iclus < nclusters; iclus++)
1941 AliVCluster * clus =
fInputEvent->GetCaloCluster(iclus) ;
1942 if ( !clus ) continue ;
1944 if ( !clus->IsPHOS() )
continue ;
1947 if( clus->GetType() == AliVCluster::kPHOSCharged )
continue ;
1971 vindex =
fMixedEvent->EventIndexForCaloCluster(iclus);
1982 AliDebug(2,Form(
"Selected clusters E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1987 clus->SetID(iclus) ;
1993 AliDebug(1,Form(
"AOD entries %d",
fPHOSClusters->GetEntriesFast()));
2024 AliESDVZERO* esdV0 =
dynamic_cast<AliESDVZERO*
> (v0);
2025 for (Int_t i = 0; i < 32; i++)
2029 fV0ADC[0] += (Int_t)esdV0->GetAdcV0C(i);
2030 fV0ADC[1] += (Int_t)esdV0->GetAdcV0A(i);
2033 fV0Mul[0] += (Int_t)v0->GetMultiplicityV0C(i);
2034 fV0Mul[1] += (Int_t)v0->GetMultiplicityV0A(i);
2041 AliDebug(1,
"Cannot retrieve V0 ESD! Run w/ null V0 charges");
2052 AliDebug(2,
"Begin");
2059 AliFatal(
"No non-standard jet branch name specified. Specify among existing ones.");
2084 AliDebug(1,
"Begin");
2091 AliFatal(
"No background jet branch name specified. Specify among existing ones.");
2105 AliDebug(1,
"FillInputBackgroundJets");
2120 Int_t trigtimes[30], globCol, globRow,ntimes, i;
2127 AliVCaloTrigger *caloTrigger =
GetInputEvent()->GetCaloTrigger(
"EMCAL" );
2131 AliError(
"Trigger patches input (AliVCaloTrigger) not available in data!");
2138 if( caloTrigger->GetEntries() > 0 )
2141 caloTrigger->Reset();
2144 while( caloTrigger->Next() )
2147 caloTrigger->GetPosition( globCol, globRow );
2153 caloTrigger->GetNL0Times( ntimes );
2161 caloTrigger->GetL0Times( trigtimes );
2165 for( i = 0; i < ntimes; i++ )
2168 if( trigtimes[i] >= tmin && trigtimes[i] <= tmax )
2174 patches.Set(nPatch+1);
2175 patches.AddAt(absId,nPatch++);
2182 caloTrigger->GetTriggerBits(bit);
2185 caloTrigger->GetL1TimeSum(sum);
2195 if(!isEGA1 && !isEJE1 && !isEGA2 && !isEJE2)
continue;
2197 Int_t patchsize = -1;
2198 if (isEGA1 || isEGA2) patchsize = 2;
2199 else if (isEJE1 || isEJE2) patchsize = 16;
2206 for(Int_t irow=0; irow < patchsize; irow++)
2208 for(Int_t icol=0; icol < patchsize; icol++)
2212 patches.Set(nPatch+1);
2213 patches.AddAt(absId,nPatch++);
2222 if(patches.GetSize()<=0) AliInfo(Form(
"No patch found! for triggers: %s and selected <%s>",
2259 TClonesArray * clusterList = 0;
2270 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
2272 nclusters = clusterList->GetEntriesFast();
2274 Int_t nPatch = patches.GetSize();
2278 Float_t tofPatchMax = 100000;
2279 Float_t ePatchMax =-1;
2281 Float_t tofMax = 100000;
2285 Int_t idclusMax =-1;
2286 Bool_t badClMax = kFALSE;
2287 Bool_t badCeMax = kFALSE;
2288 Bool_t exoMax = kFALSE;
2290 Int_t absIdMaxMax = -1;
2292 Int_t nOfHighECl = 0 ;
2302 Float_t minE = triggerThreshold / 2.;
2308 AliDebug(1,Form(
"IsL1Trigger %d, IsL1JetTrigger? %d, IsL0Trigger %d, L1 threshold %2.1f, L0 threshold %2.1f, Min cluster E %2.2f",
IsEventEMCALL1Jet(),
IsEventEMCALL1(),
IsEventEMCALL0(),
fTriggerL1EventThreshold,
fTriggerL0EventThreshold,minE));
2313 for (Int_t iclus = 0; iclus < nclusters; iclus++)
2315 AliVCluster * clus = 0;
2316 if(clusterList) clus = (AliVCluster*) clusterList->At(iclus);
2319 if ( !clus ) continue ;
2321 if ( !clus->IsEMCAL() )
continue ;
2324 if ( clus->E() < minE )
continue ;
2330 clus->GetCellsAbsId(),clus->GetNCells());
2331 UShort_t cellMax[] = {(UShort_t) absIdMax};
2348 if(!exotic && clus->GetNCells() < 2) exotic = kTRUE;
2350 Float_t
energy = clus->E();
2351 Int_t idclus = clus->GetID();
2353 Double_t tof = clus->GetTOF();
2372 badClMax = badCluster;
2377 absIdMaxMax = absIdMax;
2382 if(!badCluster && !exotic)
2388 for(Int_t iabsId =0; iabsId < nPatch; iabsId++)
2395 for(Int_t ipatch = 0; ipatch < 4; ipatch++)
2397 if(absIdMax == absIDCell[ipatch])
2400 if(energy > ePatchMax)
2423 tofPatchMax = tofMax;
2432 Double_t tofPatchMaxUS = TMath::Abs(tofPatchMax);
2467 Int_t patchAbsIdOpenTime = -1;
2468 for(Int_t iabsId =0; iabsId < patchOpen.GetSize(); iabsId++)
2471 patchAbsIdOpenTime = patchOpen.At(iabsId);
2476 for(Int_t ipatch = 0; ipatch < 4; ipatch++)
2478 if(absIdMaxMax == absIDCell[ipatch])
2487 Int_t patchAbsId = -1;
2488 Int_t globalCol = -1;
2489 Int_t globalRow = -1;
2494 Int_t patchAbsIdNeigh = -1;
2495 for(Int_t icol = globalCol-1; icol <= globalCol+1; icol++)
2497 if(icol < 0 || icol > 47)
continue;
2499 for(Int_t irow = globalRow; irow <= globalRow+1; irow++)
2501 if(irow < 0 || irow > 63)
continue;
2505 if ( patchAbsIdNeigh < 0 )
continue;
2507 for(Int_t iabsId =0; iabsId < patches.GetSize(); iabsId++)
2509 if(patchAbsIdNeigh == patches.At(iabsId))
2520 Int_t patchAbsIdNeighOpenTime = -1;
2521 for(Int_t icol = globalCol-1; icol <= globalCol+1; icol++)
2523 if(icol < 0 || icol > 47)
continue;
2525 for(Int_t irow = globalRow; irow <= globalRow+1; irow++)
2527 if(irow < 0 || irow > 63)
continue;
2531 if ( patchAbsIdNeighOpenTime < 0 )
continue;
2533 for(Int_t iabsId =0; iabsId < patchOpen.GetSize(); iabsId++)
2535 if(patchAbsIdNeighOpenTime == patchOpen.At(iabsId))
2565 AliVCaloTrigger *caloTrigger =
GetInputEvent()->GetCaloTrigger(
"EMCAL" );
2616 printf(
"***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
2617 printf(
"Task name : %s\n",
fTaskName.Data()) ;
2619 printf(
"CTS Min pT : %2.1f GeV/c\n",
fCTSPtMin) ;
2620 printf(
"EMCAL Min pT : %2.1f GeV/c\n",
fEMCALPtMin) ;
2621 printf(
"PHOS Min pT : %2.1f GeV/c\n",
fPHOSPtMin) ;
2622 printf(
"CTS Max pT : %2.1f GeV/c\n",
fCTSPtMax) ;
2623 printf(
"EMCAL Max pT : %2.1f GeV/c\n",
fEMCALPtMax) ;
2624 printf(
"PHOS Max pT : %2.1f GeV/c\n",
fPHOSPtMax) ;
2626 printf(
"Use CTS = %d\n",
fFillCTS) ;
2639 printf(
"Use Triggers selected in SE base class %d; If not what Trigger Mask? %d; MB Trigger Mask for mixed %d \n",
2663 Int_t ncellsSM3 = 0;
2664 for(Int_t icell = 0; icell <
fInputEvent->GetEMCALCells()->GetNumberOfCells(); icell++)
2666 Int_t absID =
fInputEvent->GetEMCALCells()->GetCellNumber(icell);
2668 if(
fInputEvent->GetEMCALCells()->GetAmplitude(icell) > 0.1 && sm==3) ncellsSM3++;
2671 Int_t ncellcut = 21;
2674 if(ncellsSM3 >= ncellcut)
2676 AliDebug(1,Form(
"Reject event with ncells in SM3 %d, cut %d, trig %s",
2691 if(label < 0) return ;
2693 AliAODEvent * evt =
dynamic_cast<AliAODEvent*
> (
fInputEvent) ;
2696 TClonesArray * arr =
dynamic_cast<TClonesArray*
>(evt->FindListObject(
"mcparticles")) ;
2699 if(label < arr->GetEntriesFast())
2701 AliAODMCParticle * particle =
dynamic_cast<AliAODMCParticle *
>(arr->At(label));
2702 if(!particle) return ;
2704 if(label == particle->Label())
return ;
2710 for(Int_t ind = 0; ind < arr->GetEntriesFast(); ind++ )
2712 AliAODMCParticle * particle =
dynamic_cast<AliAODMCParticle *
>(arr->At(ind));
2713 if(!particle) continue ;
2715 if(label == particle->Label())
2760 AliDebug(1,Form(
"Select trigger mask bit %d - Trigger Event %s - Select <%s>",
2878 AliDebug(1,Form(
"Event bits: \n \t MB %d, Cen %d, Sem %d, L0 %d, L1G1 %d, L1G2 %d, L1J1 %d, L1J2 %d",
2898 TFile*
file = AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile();
2900 const TList *clist = file->GetStreamerInfoCache();
2904 TStreamerInfo *cinfo = (TStreamerInfo*)clist->FindObject(
"AliESDCaloTrigger");
2908 cinfo = (TStreamerInfo*)clist->FindObject(
"AliAODCaloTrigger");
2914 Int_t classversionid = cinfo->GetClassVersion();
2917 if (classversionid >= verid)
2922 }
else AliInfo(
"AliCaloTrackReader()::SetEventTriggerBit() - Streamer info for trigger class not available, bit not changed");
2923 }
else AliInfo(
"AliCaloTrackReader::SetEventTriggerBit() - Streamer list not available!, bit not changed");
2952 fVertex[i] =
new Double_t[3] ;
Bool_t IsPileUpFromSPD() const
Double_t fEventWeight
Weight assigned to the event when filling histograms.
Bool_t fUseTrackDCACut
Do DCA selection.
TArrayI GetTriggerPatches(Int_t tmin, Int_t tmax)
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
virtual void FillInputVZERO()
Int_t fV0ADC[2]
Integrated V0 signal.
Bool_t fComparePtHardAndClusterPt
In MonteCarlo, jet events, reject events with too large cluster energy.
AliAnaWeights * fWeightUtils
Pointer to AliAnaWeights.
AliCalorimeterUtils * GetCaloUtils() const
Float_t fTimeStampEventFracMin
Minimum value of time stamp fraction event.
Bool_t fReadAODMCParticles
Access kine information from filtered AOD MC particles.
virtual void FillInputNonStandardJets()
Double_t fEMCALTimeCutMax
Remove clusters/cells with time larger than this value, in ns.
Int_t fBitEJE
Trigger bit on VCaloTrigger for EJE.
TLorentzVector fMomentum
! Temporal TLorentzVector container, avoid declaration of TLorentzVectors per event.
Double_t fTimeStampRunMin
Minimum value of time stamp in run.
Bool_t fDoPileUpEventRejection
Select pile-up events by SPD.
void SetCentrality(Float_t cen)
Bool_t fAcceptOnlyHIJINGLabels
Select clusters or tracks that where generated by HIJING, reject other generators in case of cocktail...
TObjArray * fPHOSClusters
Temporal array with PHOS CaloClusters.
Double_t fTrackDCACut[3]
Remove tracks with DCA larger than cut, parameters of function stored here.
Bool_t fUseEventsWithPrimaryVertex
Select events with primary vertex.
virtual AliVCaloCells * GetPHOSCells() const
Bool_t fIsBadCellEvent
Bad cell triggered event flag, any cell in cluster is bad.
Bool_t IsCorrectionOfClusterEnergyOn() const
Bool_t fEventTrigEMCALL1Gamma1
Event is L1-Gamma, threshold 1 on its name, it should correspond kEMCEGA.
Bool_t ClusterContainsBadChannel(Int_t calo, UShort_t *cellList, Int_t nCells)
virtual AliHeader * GetHeader() const
Bool_t CheckEventTriggers()
Bool_t IsEventEMCALL1Jet1() const
Bool_t IsEventEMCALL1Gamma1() const
AliEMCALRecoUtils * GetEMCALRecoUtils() const
void SetEMCALTriggerThresholds()
Bool_t ReadAODMCParticles() const
TString fEventPlaneMethod
Name of event plane method, by default "Q".
Int_t fTrackBCEventCut[19]
Fill one entry per event if there is a track in a given BC, depend on track pT, acceptance cut...
Bool_t fDoVertexBCEventSelection
Select events with vertex on BC=0 or -100.
AliMixedEvent * fMixedEvent
! Mixed event object. This class is not the owner.
virtual AliVEvent * GetInputEvent() const
Bool_t IsPileUpFromSPDAndNotEMCal() const
Check if event is from pile-up determined by SPD and not by EMCal.
Bool_t IsEventEMCALL1() const
Float_t fPtHardAndClusterPtFactor
Factor between ptHard and cluster pT to reject/accept event.
Bool_t fAcceptFastCluster
Accept events from fast cluster, exclude these events for LHC11a.
Bool_t fSmearShowerShape
Smear shower shape (use in MC).
AliVEvent * fInputEvent
! pointer to esd or aod input.
Calculate the weight to the event to be applied when filling histograms.
virtual void SetInputEvent(AliVEvent *input)
Double_t fTrackTimeCutMax
Remove tracks with time larger than this value, in ns.
Int_t fTriggerClusterBC
Event triggered by a cluster in BC -5 0 to 5.
virtual AliMultSelection * GetMultSelCen() const
TString fEMCALClustersListName
Alternative list of clusters produced elsewhere and not from InputEvent.
void RecalculateClusterTrackMatching(AliVEvent *event, TObjArray *clusterArray=0x0)
Bool_t fWriteOutputDeltaAOD
Write the created delta AOD objects into file.
Int_t fV0Mul[2]
Integrated V0 Multiplicity.
void RecalculateClusterDistanceToBadChannel(AliVCaloCells *cells, AliVCluster *clu)
Float_t fEMCALPtMin
pT Threshold on emcal clusters.
Bool_t fTriggerClusterTimeRecal
In case cluster already calibrated, do not try to recalibrate even if recalib on in AliEMCALRecoUtils...
Double_t ** fVertex
! Vertex array 3 dim for each mixed event buffer.
void SetGeneratorMinMaxParticles()
UInt_t fEventTriggerMask
Select this triggerered event.
virtual Int_t GetEventCentrality() const
virtual Bool_t IsHIJINGLabel(Int_t label)
virtual AliGenEventHeader * GetGenEventHeader() const
virtual AliCentrality * GetCentrality() const
AliVCaloCells * fPHOSCells
! Temporal array with PHOS AliVCaloCells.
Bool_t IsEventEMCALL1Gamma2() const
virtual AliMixedEvent * GetMixedEvent() const
Bool_t fFillInputBackgroundJetBranch
Flag to use data from background jets.
void SetTrackEventBC(Int_t bc)
virtual Bool_t ComparePtHardAndClusterPt()
TList * fAODBranchList
List with AOD branches created and needed in analysis.
void RemapMCLabelForAODs(Int_t &label)
Bool_t fEventTrigSemiCentral
Event is AliVEvent::kSemiCentral on its name, it should correspond to PbPb.
TRandom3 fRandom
! Random generator.
Bool_t AcceptDCA(Float_t pt, Float_t dca)
Bool_t IsPileUpFromNotSPDAndNotEMCal() const
Check if event not from pile-up determined neither by SPD nor by EMCal.
Bool_t fFillCTS
Use data from CTS.
virtual void InitParameters()
Initialize the parameters with default.
virtual void GetVertex(Double_t v[3]) const
Bool_t IsRecalibrationOn() const
virtual Bool_t FillInputEvent(Int_t iEntry, const char *currentFileName)
Float_t fPHOSPtMin
pT Threshold on phos clusters.
Bool_t fSelectEmbeddedClusters
Use only simulated clusters that come from embedding.
Bool_t fEventTrigMinBias
Event is min bias on its name, it should correspond to AliVEvent::kMB, AliVEvent::kAnyInt.
Float_t fEMCALParamTimeCutMin[4]
Remove clusters/cells with time smaller than parametrized value, in ns.
Int_t fEventNumber
Event number.
void RecalculateClusterPID(AliVCluster *clu)
TString fTaskName
Name of task that executes the analysis.
Bool_t fRemoveBadTriggerEvents
Remove triggered events because trigger was exotic, bad, or out of BC.
Bool_t IsPileUpFromSPDOrEMCal() const
Check if event is from pile-up determined by SPD or EMCal.
Bool_t IsPileUpFromEMCalAndNotSPD() const
Check if event is from pile-up determined by EMCal, not by SPD.
Bool_t fEventTrigEMCALL1Gamma2
Event is L1-Gamma, threshold 2 on its name, it should correspond kEMCEGA.
Bool_t fEventTrigEMCALL1Jet1
Event is L1-Gamma, threshold 1 on its name, it should correspond kEMCEGA.
Bool_t fFillEMCALCells
Use data from EMCAL.
Int_t fTriggerClusterId
Id of trigger cluster (cluster->GetID()).
Float_t fCTSPtMax
pT Threshold on charged particles.
Double_t fEMCALParamTimeCutMax[4]
Remove clusters/cells with time larger than parametrized value, in ns.
virtual void FillInputEMCALCells()
Connects the array with EMCAL cells and the pointer.
Bool_t fFillPHOSCells
Use data from PHOS.
virtual AliVCaloCells * GetEMCALCells() const
Bool_t fRemoveLEDEvents
Remove events where LED was wrongly firing - EMCAL LHC11a.
AliEMCALGeometry * GetEMCALGeometry() const
Bool_t fIsBadMaxCellEvent
Bad cell triggered event flag, only max energy cell is bad.
void RecalculateClusterShowerShapeParameters(AliVCaloCells *cells, AliVCluster *clu)
TString fFiredTriggerClassName
Name of trigger event type used to do the analysis.
virtual TClonesArray * GetAODMCParticles() const
TString GetFiredTriggerClasses() const
TObjArray * fEMCALClusters
Temporal array with EMCAL CaloClusters.
Bool_t IsEventEMCALL1Jet() const
Float_t fPHOSPtMax
pT Threshold on phos clusters.
Bool_t fAccessTrackTOF
Access the track TOF, in case of problems when accessing GetTOFBunchCrossing.
virtual Bool_t CheckForPrimaryVertex() const
Int_t fEMCalBCEvent[19]
Fill one entry per event if there is a cluster in a given BC.
TString fInputBackgroundJetBranchName
Name of background jet branch.
virtual AliEventplane * GetEventPlane() const
Bool_t fEventTriggerAtSE
Select triggered event at SE base task or here.
Float_t fEMCALPtMax
pT Threshold on emcal clusters.
Int_t fEventType
Set the event species: 7 physics, 0 MC, 8 LED (not useful now)
virtual Bool_t ComparePtHardAndJetPt()
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
Bool_t fEventTrigCentral
Event is AliVEvent::kCentral on its name, it should correspond to PbPb.
Float_t fTrackMultEtaCut
Track multiplicity eta cut.
Int_t fCentralityBin[2]
Minimum and maximum value of the centrality for the analysis.
virtual void FillInputPHOSCells()
Connects the array with PHOS cells and the pointer.
Base class for event, clusters and tracks filtering and preparation for the analysis.
TObjArray * fDCALClusters
Temporal array with DCAL CaloClusters, not needed in the normal case, use just EMCal array with DCal ...
Bool_t fUseTrackTimeCut
Do time cut selection.
virtual TString GetEventPlaneMethod() const
Bool_t AcceptEventWithTriggerBit()
TArrayI fAcceptEventsWithBit
Accept events if trigger bit is on.
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void MatchTriggerCluster(TArrayI patches)
Bool_t fTimeStampEventSelect
Select events within a fraction of data taking time.
Double_t fTimeStampRunMax
Maximum value of time stamp in run.
Double_t fEMCALTimeCutMin
Remove clusters/cells with time smaller than this value, in ns.
Bool_t fEventTrigEMCALL1Jet2
Event is L1-Gamma, threshold 2 on its name, it should correspond kEMCEGA.
void SetEMCalEventBCcut(Int_t bc)
Int_t fNPileUpClustersCut
Cut to select event as pile-up.
Bool_t fCheckFidCut
Do analysis for clusters in defined region.
virtual ~AliCaloTrackReader()
Destructor.
Bool_t fEventTrigEMCALL0
Event is EMCal L0 on its name, it should correspond to AliVEvent::kEMC7, AliVEvent::kEMC1.
Bool_t IsWeightSettingOn() const
Int_t fTrackBCEvent[19]
Fill one entry per event if there is a track in a given BC.
virtual void FillInputEMCALAlgorithm(AliVCluster *clus, Int_t iclus)
Bool_t fComparePtHardAndJetPt
In MonteCarlo, jet events, reject fake events with wrong jet energy.
Int_t fNNonPileUpClusters
Number of clusters with time below 20 ns.
Int_t fNMixedEvent
Number of events in mixed event buffer.
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)
Int_t fCentralityOpt
Option for the returned value of the centrality, possible options 5, 10, 100.
Float_t fZvtxCut
Cut on vertex position.
void RecalculateClusterPosition(AliVCaloCells *cells, AliVCluster *clu)
AliCaloTrackReader()
Constructor. Initialize parameters.
Bool_t fTriggerPatchClusterMatch
Search for the trigger patch and check if associated cluster was the trigger.
Bool_t fUseParamTimeCut
Use simple or parametrized time cut.
AliFiducialCut * fFiducialCut
Acceptance cuts.
Bool_t fRejectEMCalTriggerEventsWith2Tresholds
Reject events EG2 also triggered by EG1 or EJ2 also triggered by EJ1.
virtual void FillInputEMCAL()
Bool_t fFillEMCAL
Use data from EMCAL.
Bool_t fFillPHOS
Use data from PHOS.
AliVCaloCells * fEMCALCells
! Temporal array with EMCAL AliVCaloCells.
virtual AliAODMCHeader * GetAODMCHeader() const
void SetEventTriggerBit()
void CorrectClusterEnergy(AliVCluster *cl)
Correct cluster energy non linearity.
Float_t fCTSPtMin
pT Threshold on charged particles.
virtual AliStack * GetStack() const
Float_t fTriggerL0EventThreshold
L0 Threshold to look for triggered events, set outside.
Float_t fTimeStampEventFracMax
Maximum value of time stamp fraction event.
virtual void ResetLists()
Reset lists, called in AliAnaCaloTrackCorrMaker.
Int_t fNPileUpClusters
Number of clusters with time avobe 20 ns.
Int_t fTrackMult
Track multiplicity.
AliAODEvent * fOutputEvent
! pointer to aod output.
Bool_t fRecalculateClusters
Correct clusters, recalculate them if recalibration parameters is given.
Bool_t fDoRejectNoTrackEvents
Reject events with no selected tracks in event.
Bool_t IsEventEMCALL1Jet2() const
Bool_t fReadStack
Access kine information from stack.
Bool_t fIsTriggerMatchOpenCut[3]
Could not match the event to a trigger patch?, retry opening cuts.
UInt_t fMixEventTriggerMask
Select this triggerered event for mixing, tipically kMB or kAnyINT.
Float_t RadToDeg(Float_t rad) const
virtual void FillVertexArray()
Bool_t IsInTimeWindow(Double_t tof, Float_t energy) const
Bool_t fRemoveUnMatchedTriggers
Analyze events where trigger patch and cluster where found or not.
virtual Double_t GetEventPlaneAngle() const
TObjArray * fCTSTracks
Temporal array with tracks.
Int_t fTriggerPatchTimeWindow[2]
Trigger patch selection window.
AliMCEvent * fMC
! Monte Carlo Event Handler.
Float_t fPtHardAndJetPtFactor
Factor between ptHard and jet pT to reject/accept event.
Double_t fPileUpParamSPD[5]
TString fDeltaAODFileName
Delta AOD file name.
Int_t GetVertexBC() const
Bool_t IsPileUpFromEMCal() const
Check if event is from pile-up determined by EMCal.
virtual Double_t GetWeight()
Bool_t fFillInputNonStandardJetBranch
Flag to use data from non standard jets.
TClonesArray * fNonStandardJets
! Temporal array with jets.
Int_t fEMCalBCEventCut[19]
Fill one entry per event if there is a cluster in a given BC, depend on cluster E, acceptance cut.
Int_t fTriggerClusterIndex
Index in clusters array of trigger cluster.
Bool_t fTriggerL1EventThresholdFix
L1 Threshold is fix and set outside.
Float_t fSmearShowerShapeWidth
Smear shower shape landau function "width" (use in MC).
virtual void FillInputCTS()
Int_t fBitEGA
Trigger bit on VCaloTrigger for EGA.
Bool_t RejectEventWithTriggerBit()
virtual void FillInputBackgroundJets()
Bool_t fDoV0ANDEventSelection
Select events depending on V0AND.
AliAODJetEventBackground * fBackgroundJets
! Background jets.
Bool_t fCorrectELinearity
Correct cluster linearity, always on.
Int_t fVertexBC
Vertex BC.
Bool_t fIsExoticEvent
Exotic trigger event flag.
TString fInputNonStandardJetBranchName
Name of non standard jet branch.
TArrayI fRejectEventsWithBit
Reject events if trigger bit is on.
Bool_t fUseEMCALTimeCut
Do time cut selection.
Float_t GetPhi(Float_t phi) const
Shift phi angle in case of negative value 360 degrees. Example TLorenzVector::Phi defined in -pi to p...
Int_t fNMCProducedMax
In case of cocktail, select particles in the list with label up to this value.
Int_t fDataType
Select MC: Kinematics, Data: ESD/AOD, MCData: Both.
virtual Bool_t SelectTrack(AliVTrack *, Double_t *)
Int_t GetMaxEnergyCell(AliVCaloCells *cells, AliVCluster *clu, Float_t &fraction) const
For a given CaloCluster, it gets the absId of the cell with maximum energy deposit.
Bool_t fFillDCAL
Use data from DCAL, not needed in the normal case, use just EMCal array with DCal limits...
void SetTrackEventBCcut(Int_t bc)
Bool_t fIsTriggerMatch
Could match the event to a trigger patch?
Float_t fTriggerL1EventThreshold
L1 Threshold to look for triggered events, set in data.
TString fCentralityClass
Name of selected centrality class.
Float_t fSmearingFunction
Choice of smearing function. 0 no smearing. 1 smearing from Gustavo (Landau center at 0)...
ULong_t fTrackStatus
Track selection bit, select tracks refitted in TPC, ITS ...
Bool_t IsPileUpFromSPDAndEMCal() const
Check if event is from pile-up determined by SPD and EMCal.
virtual void FillInputPHOS()
Fill the array with PHOS filtered clusters.
Int_t fNMCProducedMin
In case of cocktail, select particles in the list with label from this value.
Bool_t fUseAliCentrality
Select as centrality estimator AliCentrality (Run1) or AliMultSelection (Run1 and Run2) ...
virtual TObjArray * GetCTSTracks() const
Bool_t fRecalculateVertexBC
Recalculate vertex BC from tracks pointing to vertex.
Float_t RecalibrateClusterEnergy(AliVCluster *cluster, AliVCaloCells *cells)
Recalibrate the cluster energy, considering the recalibration map and the energy of the cells that co...
void SetEMCalEventBC(Int_t bc)
Bool_t CheckCellFiducialRegion(AliVCluster *cluster, AliVCaloCells *cells) const
Bool_t IsEventEMCALL0() const