18 #include <TGeoManager.h> 19 #include <TStreamerInfo.h> 22 #include "AliMCEvent.h" 23 #include "AliAODMCHeader.h" 24 #include "AliGenPythiaEventHeader.h" 25 #include "AliGenEventHeader.h" 26 #include "AliESDEvent.h" 27 #include "AliAODEvent.h" 28 #include "AliVTrack.h" 29 #include "AliVParticle.h" 30 #include "AliMixedEvent.h" 32 #include "AliESDVZERO.h" 33 #include "AliVCaloCells.h" 34 #include "AliAnalysisManager.h" 35 #include "AliInputEventHandler.h" 36 #include "AliAODMCParticle.h" 37 #include "AliMultSelection.h" 40 #include "AliPHOSGeoUtils.h" 41 #include "AliEMCALGeometry.h" 50 #include "AliAODJet.h" 51 #include "AliAODJetEventBackground.h" 63 fFiducialCut(0x0), fCheckFidCut(kFALSE),
64 fComparePtHardAndJetPt(0), fPtHardAndJetPtFactor(0),
65 fComparePtHardAndClusterPt(0),fPtHardAndClusterPtFactor(0),
66 fCTSPtMin(0), fEMCALPtMin(0), fPHOSPtMin(0),
67 fCTSPtMax(0), fEMCALPtMax(0), fPHOSPtMax(0),
68 fEMCALBadChMinDist(0), fPHOSBadChMinDist (0),
69 fEMCALNCellsCut(0), fPHOSNCellsCut(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),
87 fSmearShowerShape(0), fSmearShowerShapeWidth(0), fRandom(),
88 fSmearingFunction(0), fSmearNLMMin(0), fSmearNLMMax(0),
89 fTrackStatus(0), fSelectSPDHitTracks(0),
90 fTrackMultNPtCut(0), fTrackMultEtaCut(0.9),
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), fMCUtils(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(
""), fEMCALCellsListName(
""),
109 fAcceptFastCluster(kFALSE), fRemoveLEDEvents(0),
111 fRemoveBadTriggerEvents(0), fTriggerPatchClusterMatch(0),
112 fTriggerPatchTimeWindow(), fTriggerL0EventThreshold(0),
113 fTriggerL1EventThreshold(0), fTriggerL1EventThresholdFix(0),
114 fTriggerClusterBC(0), fTriggerClusterIndex(0), fTriggerClusterId(0),
115 fIsExoticEvent(0), fIsBadCellEvent(0), fIsBadMaxCellEvent(0),
116 fIsTriggerMatch(0), fIsTriggerMatchOpenCut(),
117 fTriggerClusterTimeRecal(kTRUE), fRemoveUnMatchedTriggers(kTRUE),
118 fDoPileUpEventRejection(kFALSE), fDoV0ANDEventSelection(kFALSE),
119 fDoVertexBCEventSelection(kFALSE),
120 fDoRejectNoTrackEvents(kFALSE),
121 fUseEventsWithPrimaryVertex(kFALSE),
123 fTimeStampEventSelect(0),
124 fTimeStampEventFracMin(0), fTimeStampEventFracMax(0),
125 fTimeStampRunMin(0), fTimeStampRunMax(0),
126 fTimeStampEventCTPBCCorrExclude(0),
127 fTimeStampEventCTPBCCorrMin(0), fTimeStampEventCTPBCCorrMax(0),
128 fNPileUpClusters(-1), fNNonPileUpClusters(-1), fNPileUpClustersCut(3),
129 fVertexBC(-200), fRecalculateVertexBC(0),
130 fUseAliCentrality(0), fMultWithEventSel(0),
131 fCentralityClass(
""), fCentralityOpt(0),
132 fEventPlaneMethod(
""),
133 fFillInputNonStandardJetBranch(kFALSE),
134 fNonStandardJets(new TClonesArray(
"AliAODJet",100)), fInputNonStandardJetBranchName(
"jets"),
135 fFillInputBackgroundJetBranch(kFALSE),
136 fBackgroundJets(0x0),fInputBackgroundJetBranchName(
"jets"),
137 fAcceptEventsWithBit(0), fRejectEventsWithBit(0), fRejectEMCalTriggerEventsWith2Tresholds(0),
138 fMomentum(), fOutputContainer(0x0),
139 fhEMCALClusterEtaPhi(0), fhEMCALClusterEtaPhiFidCut(0),
140 fhEMCALClusterTimeE(0),
141 fEnergyHistogramNbins(0),
142 fhNEventsAfterCut(0), fNMCGenerToAccept(0), fMCGenerEventHeaderToAccept(
""),
143 fGenEventHeader(0), fGenPythiaEventHeader(0)
247 if(TMath::Abs(dca) < cut)
266 UInt_t trigFired = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
268 for(
Int_t ibit = 0; ibit < nAccept; ibit++)
273 if(accept)
return kTRUE ;
302 if ( !generOK ) AliDebug(1, Form(
"skip label %d, gen %s",mcLabel,genName.Data()) );
319 AliVParticle* mcpart0 = (AliVParticle*)
GetMC()->GetTrack(index);
324 printf(
"AliMCEvent-BREAK: No valid AliMCParticle at label %i\n",index);
330 if(nameGen.Contains(
"nococktailheader") )
return -1;
334 while(nameGen.IsWhitespace())
336 AliVParticle* mcpart = (AliVParticle*)
GetMC()->GetTrack(lab);
340 printf(
"AliMCEvent-BREAK: No valid AliMCParticle at label %i\n",lab);
345 mother = mcpart->GetMother();
349 printf(
"AliMCEvent - BREAK: Reached primary particle without valid mother\n");
353 AliVParticle* mcmom = (AliVParticle*)
GetMC()->GetTrack(mother);
356 printf(
"AliMCEvent-BREAK: No valid AliMCParticle mother at label %i\n",mother);
378 Int_t nsumpart =
GetMC()->GetNumberOfPrimaries();
385 TString noheader=
"nococktailheader";
389 Int_t nh = lh->GetEntries();
391 for (
Int_t i = nh-1; i >= 0; i--)
393 AliGenEventHeader* gh = (AliGenEventHeader*)lh->At(i);
395 TString genname = gh->GetName();
397 Int_t npart=gh->NProduced();
399 if (i == 0) npart = nsumpart;
401 if(index < nsumpart && index >= (nsumpart-npart))
428 UInt_t trigFired = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
430 for(
Int_t ibit = 0; ibit < nReject; ibit++)
435 if(reject)
return kFALSE ;
469 eventType = ((AliVHeader*)
fInputEvent->GetHeader())->GetEventType();
471 AliDebug(3,Form(
"Event type %d",eventType));
481 AliDebug(1,
"Pass event species selection");
489 UInt_t isTrigger = kFALSE;
499 AliInputEventHandler *inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
501 if(!inputHandler)
return kFALSE ;
506 if(!isTrigger && !isMB)
return kFALSE;
509 AliDebug(1,
"Pass uninteresting triggered events rejection in case of mixing analysis");
521 AliDebug(1,Form(
"FiredTriggerClass <%s>, selected class <%s>, compare name %d",
530 AliDebug(1,
"Accepted triggered event");
544 if(!okA || !okR)
return kFALSE;
546 AliDebug(1,
"Pass event bit rejection");
581 AliDebug(1,Form(
"ACCEPT triggered event? \n exotic? %d - bad cell %d - bad Max cell %d - BC %d - Matched %d\n",
592 AliDebug(1,
"Pass EMCal triggered event rejection \n");
603 AliDebug(1,Form(
"Do not count events from fast cluster, trigger name %s\n",
fFiredTriggerClassName.Data()));
621 if(reject)
return kFALSE;
623 AliDebug(1,
"Pass LED event rejection");
646 AliError(
"Skip event, event header is not available!");
654 if ( !processName.Contains(
"Jet") )
return kTRUE;
660 AliDebug(1,Form(
"Njets: %d, pT Hard %f",nTriggerJets, ptHard));
663 for(
Int_t ijet = 0; ijet< nTriggerJets; ijet++)
666 jet =
new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
668 AliDebug(1,Form(
"jet %d; pycell jet pT %f",ijet, jet->Pt()));
673 AliInfo(Form(
"Reject jet event with : process %d <%s>, pT Hard %2.2f, pycell jet pT %2.2f, rejection factor %1.1f",
699 AliError(
"Skip event, event header is not available!");
706 if(processName !=
"Gamma-Jet")
return kTRUE;
711 for (
Int_t iclus = 0; iclus < nclusters; iclus++)
713 AliVCluster * clus =
fInputEvent->GetCaloCluster(iclus) ;
718 AliInfo(Form(
"Reject : process %d <%s>, ecluster %2.2f, calo %d, factor %2.2f, ptHard %f",
763 for(
Int_t i = 0; i < 8; i++)
766 {
"NoCut",
"Corrected",
"GoodCluster",
"NonLinearity",
767 "EnergyAndFidutial",
"NCells",
"BadDist",
"Time" } ;
770 Form(
"EMCal %d, %s",i,names[i].
Data()),
778 (
"hEMCALReaderTimeE",
"time vs #it{E} after cuts (if no calib, shifted -615 ns)", 100,0,100,400,-400,400);
784 (
"hEMCALReaderEtaPhi",
"#eta vs #varphi",40,-2, 2,50, 0,10);
791 (
"hEMCALReaderEtaPhiFidCut",
"#eta vs #varphi after fidutial cut",40,-2, 2,50, 0,10);
799 for(
Int_t i = 0; i < 7; i++)
801 TString names[] = {
"NoCut",
"ExcludeCPV",
"BorderCut",
"FiducialCut",
"EnergyCut",
"NCells",
"BadDist"};
804 Form(
"PHOS Cut %d, %s",i,names[i].
Data()),
814 for(
Int_t i = 0; i < 6; i++)
816 TString names[] = {
"NoCut",
"Status",
"ESD_AOD",
"TOF",
"DCA",
"PtAcceptanceMult"};
819 Form(
"CTS Cut %d, %s",i,names[i].
Data()),
837 const Int_t buffersize = 255;
838 char onePar[buffersize] ;
840 snprintf(onePar,buffersize,
"--- Reader ---:") ;
844 snprintf(onePar,buffersize,
"Use detector: EMC %d, DCA %d, PHOS %d, CTS %d, EMCcells %d, PHOScells %d ; ",
846 snprintf(onePar,buffersize,
"E-pT window: EMC (%2.1f,%2.1f), PHOS (%2.1f,%2.1f), CTS (%2.1f,%2.1f); ",
855 snprintf(onePar,buffersize,
"Check: calo fid cut %d; ",
fCheckFidCut) ;
871 snprintf(onePar,buffersize,
"SE trigger sel. %d, not? trigger Mask? %d, MB Trigger Mask for mixed %d; ",
875 snprintf(onePar,buffersize,
"Select fired trigger %s; Remove Bad trigger event %d, unmatched %d; Accept fastcluster %d, Reject LED %d ",
881 snprintf(onePar,buffersize,
"Accept only labels from: ");
886 snprintf(onePar,buffersize,
"; ");
892 snprintf(onePar,buffersize,
"EMC M02 smear ON, function %d, param %2.4f, %d<=NLM<=%d; ",
909 snprintf(onePar,buffersize,
"Centrality: Class %s, Option %d, Bin [%d,%d]; New centrality %d; Mult. PS %d; Event plane method %s; ",
914 return new TObjString(parList) ;
925 return fMC->Header();
929 AliInfo(
"Header is not available");
940 AliInfo(
"Input are not AODs");
951 AliInfo(
"Input are not AODs");
967 Int_t vertexBC=vtx->GetBC();
978 for(
Int_t i = 0 ; i < ntr ; i++)
980 AliVTrack * track = (AliVTrack*) (
GetCTSTracks()->At(i));
983 ULong_t status = track->GetStatus();
984 Bool_t okTOF = (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ;
985 vertexBC = track->GetTOFBunchCrossing(bz);
993 track->PropagateToDCA(vtx,bz,100.,dca,covar);
997 if (vertexBC !=0 &&
fVertexBC != AliVTrack::kTOFBCNA)
return vertexBC;
998 else if(vertexBC == 0) bc0 = kTRUE;
1002 if( bc0 ) vertexBC = 0 ;
1003 else vertexBC = AliVTrack::kTOFBCNA ;
1018 return track->GetID();
1029 (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(this->ClassName(),
fDebug);
1140 for(
Int_t i = 0; i < 19; i++)
1196 if( tof < minCut || tof > maxCut )
return kFALSE ;
1212 fPileUpParamSPD[2] , fPileUpParamSPD[3] , fPileUpParamSPD[4] );
1297 AliInfo(
"Input event not available, skip event analysis");
1310 if(!accept)
return kFALSE;
1312 AliDebug(1,
"Pass Event trigger selection");
1328 AliDebug(1,
"Pass Time Stamp rejection");
1338 Int_t timeStamp = esd->GetTimeStampCTPBCCorr();
1343 AliDebug(1,
"Pass Time Stamp CTPBCCorr rejection");
1361 if( TMath::Abs(
fVertex[0][0] ) < 1.e-6 &&
1362 TMath::Abs(
fVertex[0][1] ) < 1.e-6 &&
1363 TMath::Abs(
fVertex[0][2] ) < 1.e-6 )
return kFALSE;
1365 AliDebug(1,
"Pass primary vertex/null rejection");
1375 AliDebug(1,
"Pass z vertex rejection");
1386 if(bPileup)
return kFALSE;
1388 AliDebug(1,
"Pass Pile-Up event rejection");
1397 Bool_t bV0AND = ((v0->GetV0ADecision()==1) && (v0->GetV0CDecision()==1));
1403 AliDebug(1,
"Reject event by V0AND");
1407 AliDebug(1,
"Pass V0AND event rejection");
1427 AliDebug(1,
"Pass centrality rejection");
1448 AliDebug(1,Form(
"Selected event header class <%s>, name <%s>; cocktail %p",
1451 GetMC()->GetCocktailList()));
1463 AliDebug(1,
"Pass Event header selection");
1471 Int_t pyProcess = 0;
1472 Int_t pyFirstGenPart = 0;
1473 Int_t pythiaVersion = 0;
1478 pyGenName,pyProcessName,pyProcess,pyFirstGenPart,pythiaVersion);
1482 AliDebug(2,Form(
"Pythia v%d name <%s>, process %d <%s>, first generated particle %d",
1483 pythiaVersion, pyGenName.Data(), pyProcess, pyProcessName.Data(), pyFirstGenPart));
1494 AliDebug(1,
"Pass Pt Hard - Jet rejection");
1503 AliDebug(1,
"Pass Pt Hard - Cluster rejection");
1539 AliDebug(1,
"Pass rejection of null track events");
1548 AliDebug(1,
"Pass rejection of events with vertex at BC!=0");
1573 AliDebug(1,
"Event accepted for analysis");
1588 AliDebug(1,Form(
"Cent. Percentile: V0M %2.2f, CL0 %2.2f, CL1 %2.2f; selected class %s",
1599 AliInfo(Form(
"Unknown centrality option %d, use 10, 20 or 100",
fCentralityOpt));
1607 AliDebug(1,Form(
"Mult. Percentile: V0M %2.2f, CL0 %2.2f, CL1 %2.2f; selected class %s",
1633 AliDebug(1,Form(
"Bad EP for <Q> method : %f",ep));
1638 if((ep > TMath::Pi()/2 || ep < -TMath::Pi()/2))
1647 AliDebug(3,Form(
"Event plane angle %f",ep));
1673 vertex[0] =
fVertex[evtIndex][0];
1674 vertex[1] =
fVertex[evtIndex][1];
1675 vertex[2] =
fVertex[evtIndex][2];
1714 AliWarning(
"NULL primary vertex");
1732 AliWarning(
"No vertex found");
1734 AliDebug(1,Form(
"Multi Event %d Vertex : %f,%f,%f",iev,
fVertex[iev][0],
fVertex[iev][1],
fVertex[iev][2]));
1748 AliDebug(1,
"Begin");
1756 for(
Int_t i = 0; i < 19; i++)
1771 for (
Int_t itrack = 0; itrack < nTracks; itrack++)
1773 AliVTrack * track = (AliVTrack*)
fInputEvent->GetTrack(itrack) ;
1780 ULong_t status = track->GetStatus();
1797 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1799 Int_t trackBC = -1000 ;
1805 trackBC = track->GetTOFBunchCrossing(bz);
1808 tof = track->GetTOFsignal()*1e-3;
1813 if (trackBC != 0 && trackBC != AliVTrack::kTOFBCNA)
fVertexBC = trackBC;
1814 else if(trackBC == 0) bc0 = kTRUE;
1832 fMomentum.SetPxPyPzE(pTrack[0],pTrack[1],pTrack[2],0);
1838 if(
fDataType ==
kAOD ) dcaTPC = ((AliAODTrack*) track)->DCA();
1885 AliDebug(2,Form(
"Selected tracks pt %3.2f, phi %3.2f deg, eta %3.2f",
1901 AliDebug(1,Form(
"CTS entries %d, input tracks %d, pass status %d, multipliticy %d",
fCTSTracks->GetEntriesFast(), nTracks, nstatus,
fTrackMult[0]));
1926 if ( clus->GetLabel() >= 0 )
1934 vindex =
fMixedEvent->EventIndexForCaloCluster(iclus);
1951 ietaMax,iphiMax,shared);
1954 AliDebug(2,Form(
"Input cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f, nCells %d, SM %d",
1962 if(clus->GetNLabels()==0 || clus->GetLabel() < 0)
return;
1988 if(
GetCaloUtils()->IsRecalculationOfClusterPositionOn())
1996 if(
GetCaloUtils()->GetEMCALRecoUtils()->IsTimeRecalibrationOn())
2025 AliDebug(1,Form(
"Bad cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
2045 AliDebug(5,Form(
"Correct Non Lin: Old E %3.2f, New E %3.2f",
2051 if(
GetCaloUtils()->GetEMCALRecoUtils()->IsClusterEnergySmeared() )
2055 AliDebug(5,Form(
"Smear energy: Old E %3.2f, New E %3.2f",clus->E(),rdmEnergy));
2057 clus->SetE(rdmEnergy);
2066 AliDebug(5,Form(
"Scale energy for SM %d: Old E %3.2f, scale factor %1.5f",iSupMod,clus->E(),scale));
2068 clus->SetE(clus->E()*scale);
2080 Int_t bc = TMath::Nint(tof/50) + 9;
2113 AliDebug(2,Form(
"Masked collumn: cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
2116 if (
GetCaloUtils()->MaskFrameCluster(iSupMod, ietaMax) )
2118 AliDebug(2,
"Mask cluster");
2133 AliDebug(2,Form(
"Cluster with n cells %d < %d",clus->GetNCells(),
fEMCALNCellsCut));
2143 Double_t distBad = clus->GetDistanceToBadChannel() ;
2145 if(distBad < 0.) distBad=9999. ;
2149 AliDebug(2, Form(
"Cluster close to bad, dist %2.2f < %2.2f",distBad,
fEMCALBadChMinDist));
2163 if(tof > 400) tofShift-=615;
2171 AliDebug(2,Form(
"Out of time window E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f, time %e",
2194 AliDebug(2,Form(
"Smear shower shape - Original: %2.4f", clus->GetM02()));
2205 clus->SetM02( clus->GetM02() );
2218 AliDebug(2,Form(
"Selected clusters (EMCAL%d, DCAL%d), E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
2227 clus->SetID(iclus) ;
2240 AliDebug(1,
"Begin");
2250 for(
Int_t i = 0; i < 19; i++)
2260 for (
Int_t iclus = 0; iclus < nclusters; iclus++)
2262 AliVCluster * clus = 0;
2263 if ( (clus =
fInputEvent->GetCaloCluster(iclus)) )
2265 if (clus->IsEMCAL())
2278 TClonesArray * clusterList = 0x0;
2295 Int_t nclusters = clusterList->GetEntriesFast();
2296 for (
Int_t iclus = 0; iclus < nclusters; iclus++)
2298 AliVCluster * clus =
dynamic_cast<AliVCluster*
> (clusterList->At(iclus));
2301 else AliWarning(
"Null cluster in list!");
2309 for(
Int_t i = 0; i < 19; i++)
2315 for (
Int_t iclus = 0; iclus <
fInputEvent->GetNumberOfCaloClusters(); iclus++)
2317 AliVCluster * clus = 0;
2319 if ( (clus =
fInputEvent->GetCaloCluster(iclus)) )
2321 if (clus->IsEMCAL())
2341 Int_t bc = TMath::Nint(tof/50) + 9;
2369 AliDebug(1,Form(
"EMCal selected clusters %d",
2371 AliDebug(2,Form(
"\t n pile-up clusters %d, n non pile-up %d",
2380 AliDebug(1,
"Begin");
2385 for (
Int_t iclus = 0; iclus < nclusters; iclus++)
2387 AliVCluster * clus =
fInputEvent->GetCaloCluster(iclus) ;
2388 if ( !clus ) continue ;
2390 if ( !clus->IsPHOS() )
continue ;
2392 if(clus->GetLabel() >=0 )
2400 if( clus->GetType() == AliVCluster::kPHOSCharged )
continue ;
2421 if(
GetCaloUtils()->ClusterContainsBadChannel(
kPHOS,clus->GetCellsAbsId(), clus->GetNCells()))
2434 vindex =
fMixedEvent->EventIndexForCaloCluster(iclus);
2465 Double_t distBad = clus->GetDistanceToBadChannel() ;
2467 if(distBad < 0.) distBad=9999. ;
2480 AliDebug(2,Form(
"Selected clusters E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
2487 clus->SetID(iclus) ;
2491 AliDebug(1,Form(
"PHOS selected clusters %d",
fPHOSClusters->GetEntriesFast())) ;
2524 AliESDVZERO* esdV0 =
dynamic_cast<AliESDVZERO*
> (v0);
2525 for (
Int_t i = 0; i < 32; i++)
2541 AliDebug(1,
"Cannot retrieve V0 ESD! Run w/ null V0 charges");
2552 AliDebug(2,
"Begin");
2559 AliFatal(
"No non-standard jet branch name specified. Specify among existing ones.");
2584 AliDebug(1,
"Begin");
2591 AliFatal(
"No background jet branch name specified. Specify among existing ones.");
2605 AliDebug(1,
"FillInputBackgroundJets");
2620 Int_t trigtimes[30], globCol, globRow,ntimes, i;
2627 AliVCaloTrigger *caloTrigger =
GetInputEvent()->GetCaloTrigger(
"EMCAL" );
2631 AliError(
"Trigger patches input (AliVCaloTrigger) not available in data!");
2638 if( caloTrigger->GetEntries() > 0 )
2641 caloTrigger->Reset();
2644 while( caloTrigger->Next() )
2647 caloTrigger->GetPosition( globCol, globRow );
2653 caloTrigger->GetNL0Times( ntimes );
2661 caloTrigger->GetL0Times( trigtimes );
2665 for( i = 0; i < ntimes; i++ )
2668 if( trigtimes[i] >= tmin && trigtimes[i] <= tmax )
2674 patches.Set(nPatch+1);
2675 patches.AddAt(absId,nPatch++);
2682 caloTrigger->GetTriggerBits(bit);
2685 caloTrigger->GetL1TimeSum(sum);
2695 if(!isEGA1 && !isEJE1 && !isEGA2 && !isEJE2)
continue;
2697 Int_t patchsize = -1;
2698 if (isEGA1 || isEGA2) patchsize = 2;
2699 else if (isEJE1 || isEJE2) patchsize = 16;
2706 for(
Int_t irow=0; irow < patchsize; irow++)
2708 for(
Int_t icol=0; icol < patchsize; icol++)
2712 patches.Set(nPatch+1);
2713 patches.AddAt(absId,nPatch++);
2722 if(patches.GetSize()<=0) AliInfo(Form(
"No patch found! for triggers: %s and selected <%s>",
2759 TClonesArray * clusterList = 0;
2772 nclusters = clusterList->GetEntriesFast();
2774 Int_t nPatch = patches.GetSize();
2785 Int_t idclusMax =-1;
2786 Bool_t badClMax = kFALSE;
2787 Bool_t badCeMax = kFALSE;
2790 Int_t absIdMaxMax = -1;
2792 Int_t nOfHighECl = 0 ;
2802 Float_t minE = triggerThreshold / 2.;
2808 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));
2813 for (
Int_t iclus = 0; iclus < nclusters; iclus++)
2815 AliVCluster * clus = 0;
2816 if(clusterList) clus = (AliVCluster*) clusterList->At(iclus);
2819 if ( !clus ) continue ;
2821 if ( !clus->IsEMCAL() )
continue ;
2824 if ( clus->E() < minE )
continue ;
2830 clus->GetCellsAbsId(),clus->GetNCells());
2848 if(!exotic && clus->GetNCells() < 2) exotic = kTRUE;
2851 Int_t idclus = clus->GetID();
2872 badClMax = badCluster;
2877 absIdMaxMax = absIdMax;
2882 if(!badCluster && !exotic)
2888 for(
Int_t iabsId =0; iabsId < nPatch; iabsId++)
2895 for(
Int_t ipatch = 0; ipatch < 4; ipatch++)
2897 if(absIdMax == absIDCell[ipatch])
2900 if(energy > ePatchMax)
2923 tofPatchMax = tofMax;
2932 Double_t tofPatchMaxUS = TMath::Abs(tofPatchMax);
2967 Int_t patchAbsIdOpenTime = -1;
2968 for(
Int_t iabsId =0; iabsId < patchOpen.GetSize(); iabsId++)
2971 patchAbsIdOpenTime = patchOpen.At(iabsId);
2976 for(
Int_t ipatch = 0; ipatch < 4; ipatch++)
2978 if(absIdMaxMax == absIDCell[ipatch])
2987 Int_t patchAbsId = -1;
2988 Int_t globalCol = -1;
2989 Int_t globalRow = -1;
2994 Int_t patchAbsIdNeigh = -1;
2995 for(
Int_t icol = globalCol-1; icol <= globalCol+1; icol++)
2997 if(icol < 0 || icol > 47)
continue;
2999 for(
Int_t irow = globalRow; irow <= globalRow+1; irow++)
3001 if(irow < 0 || irow > 63)
continue;
3005 if ( patchAbsIdNeigh < 0 )
continue;
3007 for(
Int_t iabsId =0; iabsId < patches.GetSize(); iabsId++)
3009 if(patchAbsIdNeigh == patches.At(iabsId))
3020 Int_t patchAbsIdNeighOpenTime = -1;
3021 for(
Int_t icol = globalCol-1; icol <= globalCol+1; icol++)
3023 if(icol < 0 || icol > 47)
continue;
3025 for(
Int_t irow = globalRow; irow <= globalRow+1; irow++)
3027 if(irow < 0 || irow > 63)
continue;
3031 if ( patchAbsIdNeighOpenTime < 0 )
continue;
3033 for(
Int_t iabsId =0; iabsId < patchOpen.GetSize(); iabsId++)
3035 if(patchAbsIdNeighOpenTime == patchOpen.At(iabsId))
3065 AliVCaloTrigger *caloTrigger =
GetInputEvent()->GetCaloTrigger(
"EMCAL" );
3121 printf(
"***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
3122 printf(
"Task name : %s\n",
fTaskName.Data()) ;
3124 printf(
"CTS Min pT : %2.1f GeV/c\n",
fCTSPtMin) ;
3125 printf(
"EMCAL Min pT : %2.1f GeV/c\n",
fEMCALPtMin) ;
3126 printf(
"PHOS Min pT : %2.1f GeV/c\n",
fPHOSPtMin) ;
3127 printf(
"CTS Max pT : %2.1f GeV/c\n",
fCTSPtMax) ;
3128 printf(
"EMCAL Max pT : %2.1f GeV/c\n",
fEMCALPtMax) ;
3129 printf(
"PHOS Max pT : %2.1f GeV/c\n",
fPHOSPtMax) ;
3135 printf(
"Use CTS = %d\n",
fFillCTS) ;
3145 printf(
"Track Mult Pt Cuts:") ;
3152 printf(
"Use Triggers selected in SE base class %d; If not what Trigger Mask? %d; MB Trigger Mask for mixed %d \n",
3180 Int_t ncellsSM3 = 0;
3181 for(
Int_t icell = 0; icell <
fInputEvent->GetEMCALCells()->GetNumberOfCells(); icell++)
3185 if(
fInputEvent->GetEMCALCells()->GetAmplitude(icell) > 0.1 && sm==3) ncellsSM3++;
3188 Int_t ncellcut = 21;
3191 if(ncellsSM3 >= ncellcut)
3193 AliDebug(1,Form(
"Reject event with ncells in SM3 %d, cut %d, trig %s",
3202 Int_t ncellsSM[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
3204 for(
Int_t icell = 0; icell <
fInputEvent->GetEMCALCells()->GetNumberOfCells(); icell++)
3208 if(
fInputEvent->GetEMCALCells()->GetAmplitude(icell) > 0.1) ncellsSM[sm]++;
3211 Int_t ncellcut = 21;
3216 if(ncellsSM[ism] >= ncellcut)
3218 AliDebug(1,Form(
"Reject event with ncells in SM%d %d, cut %d, trig %s",
3236 if(label < 0) return ;
3241 TClonesArray * arr =
dynamic_cast<TClonesArray*
>(evt->FindListObject(
"mcparticles")) ;
3244 if(label < arr->GetEntriesFast())
3246 AliAODMCParticle * particle =
dynamic_cast<AliAODMCParticle *
>(arr->At(label));
3247 if(!particle) return ;
3249 if(label == particle->Label())
return ;
3255 for(
Int_t ind = 0; ind < arr->GetEntriesFast(); ind++ )
3257 AliAODMCParticle * particle =
dynamic_cast<AliAODMCParticle *
>(arr->At(ind));
3258 if(!particle) continue ;
3260 if(label == particle->Label())
3305 AliDebug(1,Form(
"Select trigger mask bit %d - Trigger Event %s - Select <%s>",
3423 AliDebug(1,Form(
"Event bits: \n \t MB %d, Cen %d, Sem %d, L0 %d, L1G1 %d, L1G2 %d, L1J1 %d, L1J2 %d",
3443 TFile*
file = AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile();
3445 const TList *clist = file->GetStreamerInfoCache();
3449 TStreamerInfo *cinfo = (TStreamerInfo*)clist->FindObject(
"AliESDCaloTrigger");
3453 cinfo = (TStreamerInfo*)clist->FindObject(
"AliAODCaloTrigger");
3459 Int_t classversionid = cinfo->GetClassVersion();
3462 if (classversionid >= verid)
3467 }
else AliInfo(
"AliCaloTrackReader()::SetEventTriggerBit() - Streamer info for trigger class not available, bit not changed");
3468 }
else AliInfo(
"AliCaloTrackReader::SetEventTriggerBit() - Streamer list not available!, bit not changed");
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)
virtual void FillInputVZERO()
virtual AliMCEvent * GetMC() const
Int_t fV0ADC[2]
Integrated V0 signal.
Bool_t IsL1PhaseInTimeRecalibrationOn() const
Bool_t fComparePtHardAndClusterPt
In MonteCarlo, jet events, reject events with too large cluster energy.
AliAnaWeights * fWeightUtils
Pointer to AliAnaWeights.
Double_t fTimeStampEventCTPBCCorrMax
Maximum value of time stamp corrected by CTP in run.
AliCalorimeterUtils * GetCaloUtils() const
TH2F * fhEMCALClusterEtaPhiFidCut
! Control histogram on EMCAL clusters acceptance, after fiducial cuts
Float_t fTimeStampEventFracMin
Minimum value of time stamp fraction event.
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)
TObjArray * fPHOSClusters
Temporal array with PHOS CaloClusters.
TString GetGeneratorNameAndIndex(Int_t index, Int_t &genIndex) const
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.
virtual AliHeader * GetHeader() const
Bool_t CheckEventTriggers()
Bool_t IsEventEMCALL1Jet1() const
Bool_t IsEventEMCALL1Gamma1() const
Int_t fRemoveLEDEvents
Remove events where LED was wrongly firing - only EMCAL LHC11a for this equal to 1, generalized to any SM for larger.
AliEMCALRecoUtils * GetEMCALRecoUtils() const
void SetEMCALTriggerThresholds()
Int_t fSmearNLMMin
Do smearing for clusters with at least this value.
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.
TH2F * fhEMCALClusterTimeE
! Control histogram on EMCAL timing
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.
static AliGenPythiaEventHeader * GetPythiaEventHeader(AliMCEvent *mcevent, TString selecHeaderName, TString &genName, TString &processName, Int_t &process, Int_t &firstParticle, Int_t &pythiaVersion)
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)
Bool_t IsExoticCluster(const AliVCluster *cluster, AliVCaloCells *cells, Int_t bc=0)
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.
Float_t fPHOSBadChMinDist
Minimal distance to bad channel to accept cluster in PHOS, cm.
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.
TH1F * fhCTSTrackCutsPt[6]
! Control histogram on the different CTS tracks selection cuts, pT
UInt_t fEventTriggerMask
Select this triggerered event.
virtual Int_t GetEventCentrality() const
virtual AliCentrality * GetCentrality() const
AliVCaloCells * fPHOSCells
! Temporal array with PHOS AliVCaloCells.
TList * fOutputContainer
! Output container with cut control histograms.
Bool_t IsEventEMCALL1Gamma2() const
virtual AliMixedEvent * GetMixedEvent() const
Int_t fEnergyHistogramNbins
Binning of the control histograms, min and max window.
Bool_t fFillInputBackgroundJetBranch
Flag to use data from background jets.
void SetTrackEventBC(Int_t bc)
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 AliGenEventHeader * GetGenEventHeader() const
virtual void InitParameters()
Initialize the parameters with default.
virtual void GetVertex(Double_t v[3]) const
Bool_t IsRecalibrationOn() const
Int_t fTrackMult[10]
Track multiplicity, count for different pT cuts.
virtual Bool_t FillInputEvent(Int_t iEntry, const char *currentFileName)
Float_t fScaleFactorPerSM[22]
Scale factor depending on SM number to be applied to cluster energy.
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.
Float_t fTrackMultPtCut[10]
Track multiplicity and sum pt cuts list.
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.
Double_t fTimeStampEventCTPBCCorrMin
Minimum value of time stamp corrected by CTP in run.
Bool_t fFillEMCALCells
Use data from EMCAL.
AliGenPythiaEventHeader * fGenPythiaEventHeader
! Event header casted to pythia
Float_t fEnergyHistogramLimit[2]
Binning of the control histograms, number of bins.
Int_t fTriggerClusterId
Id of trigger cluster (cluster->GetID()).
Int_t fPHOSNCellsCut
Accept for the analysis PHOS clusters with more than fNCellsCut cells.
Float_t fCTSPtMax
pT Threshold on charged particles.
Int_t GetCocktailGeneratorAndIndex(Int_t index, TString &nameGen) const
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
TH2F * fhEMCALClusterEtaPhi
! Control histogram on EMCAL clusters acceptance, before fiducial cuts
AliEMCALGeometry * GetEMCALGeometry() const
Bool_t fIsBadMaxCellEvent
Bad cell triggered event flag, only max energy cell is bad.
void RecalculateClusterShowerShapeParameters(AliVCaloCells *cells, AliVCluster *clu)
Bool_t fSelectSPDHitTracks
Ensure that track hits SPD layers.
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
AliGenEventHeader * fGenEventHeader
! Event header
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.
Int_t fNMCGenerToAccept
Number of MC generators that should not be included in analysis.
Float_t fEMCALPtMax
pT Threshold on emcal clusters.
Int_t fEventType
Set the event species: 7 physics, 0 MC, 8 LED (not useful now)
Float_t GetExoticCellDiffTimeCut() const
void RecalculateClusterTrackMatching(AliVEvent *event, TObjArray *clusterArray=0x0, AliMCEvent *mc=0x0)
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
void SetExoticCellDiffTimeCut(Float_t dt)
virtual Bool_t ComparePtHardAndClusterPt(Int_t process, TString processName)
Bool_t fEventTrigCentral
Event is AliVEvent::kCentral on its name, it should correspond to PbPb.
virtual TObjString * GetListOfParameters()
Save parameters used for analysis in a string.
Float_t fTrackMultEtaCut
Track multiplicity eta cut.
TString fMCGenerToAccept[5]
List with name of generators that should not be included.
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
virtual Int_t GetTrackID(AliVTrack *track)
Bool_t fScaleEPerSM
Scale cluster energy by a constant factor, depending on SM.
Bool_t AcceptEventWithTriggerBit()
TArrayI fAcceptEventsWithBit
Accept events if trigger bit is on.
TH1F * fhEMCALClusterCutsE[8]
! Control histogram on the different EMCal cluster selection cuts, E
virtual Bool_t ComparePtHardAndJetPt(Int_t process, TString processName)
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.
Int_t fDebug
Debugging level.
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.
Int_t GetNumberOfLocalMaxima(AliVCluster *cluster, AliVCaloCells *cells)
Find the number of local maxima in cluster.
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.
Int_t GetNMaskCellColumns() const
AliFiducialCut * fFiducialCut
Acceptance cuts.
Bool_t fRejectEMCalTriggerEventsWith2Tresholds
Reject events EG2 also triggered by EG1 or EJ2 also triggered by EJ1.
Bool_t IsGoodCluster(AliVCluster *cluster, const AliEMCALGeometry *geom, AliVCaloCells *cells, Int_t bc=-1)
TH1F * fhPHOSClusterCutsE[7]
! Control histogram on the different PHOS cluster selection cuts, E
void GetMaxEnergyCell(const AliEMCALGeometry *geom, AliVCaloCells *cells, const AliVCluster *clu, Int_t &absId, Int_t &iSupMod, Int_t &ieta, Int_t &iphi, Bool_t &shared)
virtual AliMCAnalysisUtils * GetMCAnalysisUtils()
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()
Int_t fEMCALNCellsCut
Accept for the analysis EMCAL clusters with more than fNCellsCut cells.
void CorrectClusterEnergy(AliVCluster *cl)
Correct cluster energy non linearity.
Float_t fCTSPtMin
pT Threshold on charged particles.
Bool_t fMultWithEventSel
Embedded event selection in multiplicity task activated.
Int_t fSmearNLMMax
Do smearing for clusters with at maximum this value.
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.
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
Float_t fEMCALBadChMinDist
Minimal distance to bad channel to accept cluster in EMCal, cell units.
Bool_t fTimeStampEventCTPBCCorrExclude
Activate event selection within a range of data taking time CTP corrected. ESD only.
Bool_t fIsTriggerMatchOpenCut[3]
Could not match the event to a trigger patch?, retry opening cuts.
TString fEMCALCellsListName
Alternative list of cells produced elsewhere and not from InputEvent.
UInt_t fMixEventTriggerMask
Select this triggerered event for mixing, tipically kMB or kAnyINT.
Float_t RadToDeg(Float_t rad) const
TFile * file
TList with histograms for a given trigger.
void RecalibrateCellTimeL1Phase(Int_t iSM, Int_t bc, Double_t &time) 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
void SetPythiaEventHeader(AliGenPythiaEventHeader *py)
TObjArray * fCTSTracks
Temporal array with tracks.
Int_t fTriggerPatchTimeWindow[2]
Trigger patch selection window.
Bool_t AcceptParticleMCLabel(Int_t mcLabel) const
AliMCEvent * fMC
! Monte Carlo Event Handler.
TH1I * fhNEventsAfterCut
! Each bin represents number of events resulting after a given selection cut: vertex, trigger, ...
Float_t fPtHardAndJetPtFactor
Factor between ptHard and jet pT to reject/accept event.
TString fMCGenerEventHeaderToAccept
Accept events that contain at least this event header name.
Double_t fPileUpParamSPD[5]
TString fDeltaAODFileName
Delta AOD file name.
Int_t GetVertexBC() const
Float_t fTrackSumPt[10]
Track sum pT, count for different pT cuts.
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.
Int_t fTrackMultNPtCut
Track multiplicty, number of pt cuts.
AliMCAnalysisUtils * fMCUtils
MonteCarlo Analysis utils. Initialized in SetMC()
Bool_t RejectEventWithTriggerBit()
virtual void FillInputBackgroundJets()
Bool_t fDoV0ANDEventSelection
Select events depending on V0AND.
Bool_t ClusterContainsBadChannel(const AliEMCALGeometry *geom, const UShort_t *cellList, Int_t nCells)
Class with analysis utils for simulations.
AliAODJetEventBackground * fBackgroundJets
! Background jets.
Bool_t fCorrectELinearity
Correct cluster linearity, always on.
virtual TList * GetCreateControlHistograms()
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 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.
Int_t fMCGenerIndexToAccept[5]
List with index of generators that should not be included.
void RecalibrateCellTime(Int_t absId, Int_t bc, Double_t &time, Bool_t isLGon=kFALSE) const
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.
virtual TObjArray * GetCTSTracks() const
Bool_t fUseAliCentrality
Select as centrality estimator AliCentrality (Run1) or AliMultSelection (Run1 and Run2) ...
Int_t fSmearingFunction
Choice of smearing function. 0 no smearing. 1 smearing from Gustavo (Landau center at 0)...
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)
Float_t SmearClusterEnergy(const AliVCluster *clu)
Bool_t CheckCellFiducialRegion(AliVCluster *cluster, AliVCaloCells *cells) const
Bool_t IsEventEMCALL0() const