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 fEMCALBadChMinDist(0), fPHOSBadChMinDist (0),
71 fEMCALNCellsCut(0), fPHOSNCellsCut(0),
72 fUseEMCALTimeCut(1), fUseParamTimeCut(0),
73 fUseTrackTimeCut(0), fAccessTrackTOF(0),
74 fEMCALTimeCutMin(-10000), fEMCALTimeCutMax(10000),
75 fEMCALParamTimeCutMin(), fEMCALParamTimeCutMax(),
76 fTrackTimeCutMin(-10000), fTrackTimeCutMax(10000),
79 fCTSTracks(0x0), fEMCALClusters(0x0),
80 fDCALClusters(0x0), fPHOSClusters(0x0),
81 fEMCALCells(0x0), fPHOSCells(0x0),
82 fInputEvent(0x0), fOutputEvent(0x0),fMC(0x0),
83 fFillCTS(0), fFillEMCAL(0),
84 fFillDCAL(0), fFillPHOS(0),
85 fFillEMCALCells(0), fFillPHOSCells(0),
86 fRecalculateClusters(kFALSE),fCorrectELinearity(kTRUE),
87 fSelectEmbeddedClusters(kFALSE),
88 fSmearShowerShape(0), fSmearShowerShapeWidth(0), fRandom(),
90 fTrackStatus(0), fSelectSPDHitTracks(0),
91 fTrackMult(0), fTrackMultEtaCut(0.9),
92 fReadStack(kFALSE), fReadAODMCParticles(kFALSE),
93 fDeltaAODFileName(
""), fFiredTriggerClassName(
""),
95 fEventTriggerMask(0), fMixEventTriggerMask(0), fEventTriggerAtSE(0),
96 fEventTrigMinBias(0), fEventTrigCentral(0),
97 fEventTrigSemiCentral(0), fEventTrigEMCALL0(0),
98 fEventTrigEMCALL1Gamma1(0), fEventTrigEMCALL1Gamma2(0),
99 fEventTrigEMCALL1Jet1(0), fEventTrigEMCALL1Jet2(0),
100 fBitEGA(0), fBitEJE(0),
103 fTaskName(
""), fCaloUtils(0x0),
104 fWeightUtils(0x0), fEventWeight(1),
105 fMixedEvent(NULL), fNMixedEvent(0), fVertex(NULL),
106 fListMixedTracksEvents(), fListMixedCaloEvents(),
107 fLastMixedTracksEvent(-1), fLastMixedCaloEvent(-1),
108 fWriteOutputDeltaAOD(kFALSE),
109 fEMCALClustersListName(
""), fZvtxCut(0.),
110 fAcceptFastCluster(kFALSE), fRemoveLEDEvents(kFALSE),
112 fRemoveBadTriggerEvents(0), fTriggerPatchClusterMatch(1),
113 fTriggerPatchTimeWindow(), fTriggerL0EventThreshold(0),
114 fTriggerL1EventThreshold(0), fTriggerL1EventThresholdFix(0),
115 fTriggerClusterBC(0), fTriggerClusterIndex(0), fTriggerClusterId(0),
116 fIsExoticEvent(0), fIsBadCellEvent(0), fIsBadMaxCellEvent(0),
117 fIsTriggerMatch(0), fIsTriggerMatchOpenCut(),
118 fTriggerClusterTimeRecal(kTRUE), fRemoveUnMatchedTriggers(kTRUE),
119 fDoPileUpEventRejection(kFALSE), fDoV0ANDEventSelection(kFALSE),
120 fDoVertexBCEventSelection(kFALSE),
121 fDoRejectNoTrackEvents(kFALSE),
122 fUseEventsWithPrimaryVertex(kFALSE),
124 fTimeStampEventSelect(0),
125 fTimeStampEventFracMin(0), fTimeStampEventFracMax(0),
126 fTimeStampRunMin(0), fTimeStampRunMax(0),
127 fNPileUpClusters(-1), fNNonPileUpClusters(-1), fNPileUpClustersCut(3),
128 fVertexBC(-200), fRecalculateVertexBC(0),
129 fUseAliCentrality(0), fCentralityClass(
""), fCentralityOpt(0),
130 fEventPlaneMethod(
""),
131 fAcceptOnlyHIJINGLabels(0), fNMCProducedMin(0), fNMCProducedMax(0),
132 fFillInputNonStandardJetBranch(kFALSE),
133 fNonStandardJets(new TClonesArray(
"AliAODJet",100)), fInputNonStandardJetBranchName(
"jets"),
134 fFillInputBackgroundJetBranch(kFALSE),
135 fBackgroundJets(0x0),fInputBackgroundJetBranchName(
"jets"),
136 fAcceptEventsWithBit(0), fRejectEventsWithBit(0), fRejectEMCalTriggerEventsWith2Tresholds(0),
137 fMomentum(), fOutputContainer(0x0), fEnergyHistogramNbins(0),
239 if(TMath::Abs(dca) < cut)
258 UInt_t trigFired = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
260 for(Int_t ibit = 0; ibit < nAccept; ibit++)
265 if(accept)
return kTRUE ;
284 UInt_t trigFired = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
286 for(Int_t ibit = 0; ibit < nReject; ibit++)
291 if(reject)
return kFALSE ;
308 AliDebug(1,Form(
"FiredTriggerClass <%s>, selected class <%s>, compare name %d",
317 AliDebug(1,
"Accepted triggered event");
343 eventType = ((AliVHeader*)
fInputEvent->GetHeader())->GetEventType();
345 AliDebug(3,Form(
"Event type %d",eventType));
355 AliDebug(1,
"Pass event species selection");
363 UInt_t isTrigger = kFALSE;
364 UInt_t isMB = kFALSE;
372 AliAnalysisManager *manager = AliAnalysisManager::GetAnalysisManager();
373 AliInputEventHandler *inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
375 if(!inputHandler)
return kFALSE ;
380 if(!isTrigger && !isMB)
return kFALSE;
383 AliDebug(0,
"Pass uninteresting triggered events rejection in case of mixing analysis");
398 if(!okA || !okR)
return kFALSE;
400 AliDebug(1,
"Pass event bit rejection");
435 AliDebug(1,Form(
"ACCEPT triggered event? \n exotic? %d - bad cell %d - bad Max cell %d - BC %d - Matched %d\n",
444 AliDebug(1,
"Pass EMCal triggered event rejection \n");
455 AliDebug(1,Form(
"Do not count events from fast cluster, trigger name %s\n",
fFiredTriggerClassName.Data()));
473 if(reject)
return kFALSE;
475 AliDebug(1,
"Pass LED event rejection");
498 Int_t nTriggerJets = pygeh->NTriggerJets();
499 Float_t ptHard = pygeh->GetPtHard();
501 AliDebug(1,Form(
"Njets: %d, pT Hard %f",nTriggerJets, ptHard));
503 Float_t tmpjet[]={0,0,0,0};
504 for(Int_t ijet = 0; ijet< nTriggerJets; ijet++)
506 pygeh->TriggerJet(ijet, tmpjet);
507 jet =
new TParticle(94, 21, -1, -1, -1, -1, tmpjet[0],tmpjet[1],tmpjet[2],tmpjet[3], 0,0,0,0);
509 AliDebug(1,Form(
"jet %d; pycell jet pT %f",ijet, jet->Pt()));
514 AliInfo(Form(
"Reject jet event with : pT Hard %2.2f, pycell jet pT %2.2f, rejection factor %1.1f\n",
537 Float_t ptHard = pygeh->GetPtHard();
539 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
540 for (Int_t iclus = 0; iclus < nclusters; iclus++)
542 AliVCluster * clus =
fInputEvent->GetCaloCluster(iclus) ;
543 Float_t ecluster = clus->E();
547 AliInfo(Form(
"Reject : ecluster %2.2f, calo %d, factor %2.2f, ptHard %f",ecluster,clus->GetType(),
fPtHardAndClusterPtFactor,ptHard));
565 fhNEventsAfterCut =
new TH1I(
"hNEventsAfterCut",
"Number of analyzed events", 18, 0, 18) ;
591 for(Int_t i = 0; i < 8; i++)
593 TString names[] = {
"NoCut",
"Corrected",
"GoodCluster",
"NonLinearity",
594 "EnergyAndFidutial",
"Time",
"NCells",
"BadDist"};
597 Form(
"EMCal %d, %s",i,names[i].
Data()),
607 for(Int_t i = 0; i < 7; i++)
609 TString names[] = {
"NoCut",
"ExcludeCPV",
"BorderCut",
"FiducialCut",
"EnergyCut",
"NCells",
"BadDist"};
612 Form(
"PHOS Cut %d, %s",i,names[i].
Data()),
622 for(Int_t i = 0; i < 6; i++)
624 TString names[] = {
"NoCut",
"Status",
"ESD_AOD",
"TOF",
"DCA",
"PtAcceptanceMult"};
627 Form(
"CTS Cut %d, %s",i,names[i].
Data()),
645 const Int_t buffersize = 255;
646 char onePar[buffersize] ;
648 snprintf(onePar,buffersize,
"--- Reader ---:") ;
652 snprintf(onePar,buffersize,
"Use detector: EMC %d, DCA %d, PHOS %d, CTS %d, EMCcells %d, PHOScells %d ; ",
654 snprintf(onePar,buffersize,
"E-pT window: EMC (%2.1f,%2.1f), PHOS (%2.1f,%2.1f), CTS (%2.1f,%2.1f); ",
663 snprintf(onePar,buffersize,
"Check: calo fid cut %d; ",
fCheckFidCut) ;
677 snprintf(onePar,buffersize,
"SE trigger sel. %d, not? trigger Mask? %d, MB Trigger Mask for mixed %d; ",
681 snprintf(onePar,buffersize,
"Select fired trigger %s; Remove Bad trigger event %d, unmatched %d; Accept fastcluster %d, Reject LED %d ",
687 snprintf(onePar,buffersize,
"Accept HIJING only labels; ");
709 snprintf(onePar,buffersize,
"Centrality: Class %s, Option %d, Bin [%d,%d]; New centrality %d; Event plane method %s; ",
713 return new TObjString(parList) ;
726 AliDebug(1,
"Stack is not available");
738 return fMC->Header();
742 AliInfo(
"Header is not available");
759 AliGenEventHeader * eventHeader =
fMC->GenEventHeader();
765 AliGenCocktailEventHeader *cocktail =
dynamic_cast<AliGenCocktailEventHeader *
>(eventHeader);
767 if(!cocktail) return ;
769 TList *genHeaders = cocktail->GetHeaders();
771 Int_t nGenerators = genHeaders->GetEntries();
774 for(Int_t igen = 0; igen < nGenerators; igen++)
776 AliGenEventHeader * eventHeader2 = (AliGenEventHeader*)genHeaders->At(igen) ;
777 TString name = eventHeader2->GetName();
784 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return ;
793 if( nGenerators <= 0) return ;
797 for(Int_t igen = 0; igen < nGenerators; igen++)
799 AliGenEventHeader * eventHeader =
GetAODMCHeader()->GetCocktailHeader(igen) ;
800 TString name = eventHeader->GetName();
807 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return ;
821 AliGenEventHeader * eventHeader =
fMC->GenEventHeader();
827 AliGenCocktailEventHeader *cocktail =
dynamic_cast<AliGenCocktailEventHeader *
>(eventHeader);
829 if(!cocktail)
return 0x0 ;
831 TList *genHeaders = cocktail->GetHeaders();
833 Int_t nGenerators = genHeaders->GetEntries();
836 for(Int_t igen = 0; igen < nGenerators; igen++)
838 AliGenEventHeader * eventHeader2 = (AliGenEventHeader*)genHeaders->At(igen) ;
839 TString name = eventHeader2->GetName();
843 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return eventHeader2 ;
854 if( nGenerators <= 0)
return 0x0;
858 for(Int_t igen = 0; igen < nGenerators; igen++)
860 AliGenEventHeader * eventHeader =
GetAODMCHeader()->GetCocktailHeader(igen) ;
861 TString name = eventHeader->GetName();
865 if(name.Contains(
"Hijing",TString::kIgnoreCase))
return eventHeader ;
884 AliInfo(
"Input are not AODs");
895 AliInfo(
"Input are not AODs");
911 Int_t vertexBC=vtx->GetBC();
922 for(Int_t i = 0 ; i < ntr ; i++)
924 AliVTrack * track = (AliVTrack*) (
GetCTSTracks()->At(i));
927 ULong_t status = track->GetStatus();
928 Bool_t okTOF = (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ;
929 vertexBC = track->GetTOFBunchCrossing(bz);
930 Float_t pt = track->Pt();
935 Double_t dca[2] = {1e6,1e6};
936 Double_t covar[3] = {1e6,1e6,1e6};
937 track->PropagateToDCA(vtx,bz,100.,dca,covar);
941 if (vertexBC !=0 &&
fVertexBC != AliVTrack::kTOFBCNA)
return vertexBC;
942 else if(vertexBC == 0) bc0 = kTRUE;
946 if( bc0 ) vertexBC = 0 ;
947 else vertexBC = AliVTrack::kTOFBCNA ;
962 return track->GetID();
973 AliInfo(
"Cannot access stack and mcparticles at the same time, change them");
1079 for(Int_t i = 0; i < 19; i++)
1120 AliGenHijingEventHeader* hijingHeader =
dynamic_cast<AliGenHijingEventHeader *
> (
GetGenEventHeader());
1124 if(!hijingHeader || label < 0 )
return kFALSE;
1140 Int_t nprimaries =
GetStack()->GetNtrack();
1142 if(label > nprimaries)
return kFALSE;
1144 TParticle * mom =
GetStack()->Particle(label);
1147 Int_t iParent = mom->GetFirstMother();
1158 iParent = mom->GetFirstMother();
1168 if(!mcparticles)
return kFALSE;
1170 Int_t nprimaries = mcparticles->GetEntriesFast();
1172 if(label > nprimaries)
return kFALSE;
1182 AliAODMCParticle * mom = (AliAODMCParticle *) mcparticles->At(label);
1185 Int_t iParent = mom->GetMother();
1195 mom = (AliAODMCParticle *) mcparticles->At(iMom);
1196 iParent = mom->GetMother();
1219 if( tof < minCut || tof > maxCut )
return kFALSE ;
1235 fPileUpParamSPD[2] , fPileUpParamSPD[3] , fPileUpParamSPD[4] );
1320 AliInfo(
"Input event not available, skip event analysis");
1333 if(!accept)
return kFALSE;
1335 AliDebug(1,
"Pass Event trigger selection");
1345 AliDebug(1,
"Pass Pt Hard - Jet rejection");
1352 AliDebug(1,
"Pass Pt Hard - Cluster rejection");
1362 AliESDEvent* esd =
dynamic_cast<AliESDEvent*
> (
fInputEvent);
1365 Int_t timeStamp = esd->GetTimeStamp();
1373 AliDebug(1,
"Pass Time Stamp rejection");
1391 if( TMath::Abs(
fVertex[0][0] ) < 1.e-6 &&
1392 TMath::Abs(
fVertex[0][1] ) < 1.e-6 &&
1393 TMath::Abs(
fVertex[0][2] ) < 1.e-6 )
return kFALSE;
1396 AliDebug(1,
"Pass primary vertex rejection");
1408 if(bPileup)
return kFALSE;
1410 AliDebug(1,
"Pass Pile-Up event rejection");
1419 Bool_t bV0AND = ((v0->GetV0ADecision()==1) && (v0->GetV0CDecision()==1));
1425 AliDebug(1,
"Reject event by V0AND");
1429 AliDebug(1,
"Pass V0AND event rejection");
1447 AliDebug(1,
"Pass centrality rejection");
1488 AliDebug(1,
"Pass rejection of null track events");
1495 AliDebug(1,
"Pass rejection of events with vertex at BC!=0");
1520 AliDebug(1,
"Event accepted for analysis");
1540 AliInfo(Form(
"Unknown centrality option %d, use 10, 20 or 100\n",
fCentralityOpt));
1568 AliDebug(1,Form(
"Bad EP for <Q> method : %f\n",ep));
1573 if((ep > TMath::Pi()/2 || ep < -TMath::Pi()/2))
1582 AliDebug(3,Form(
"Event plane angle %f",ep));
1608 vertex[0] =
fVertex[evtIndex][0];
1609 vertex[1] =
fVertex[evtIndex][1];
1610 vertex[2] =
fVertex[evtIndex][2];
1632 fVertex[i] =
new Double_t[3] ;
1649 AliWarning(
"NULL primary vertex");
1667 AliWarning(
"No vertex found");
1669 AliDebug(1,Form(
"Multi Event %d Vertex : %f,%f,%f",iev,
fVertex[iev][0],
fVertex[iev][1],
fVertex[iev][2]));
1683 AliDebug(1,
"Begin");
1685 Double_t pTrack[3] = {0,0,0};
1687 Int_t nTracks =
fInputEvent->GetNumberOfTracks() ;
1692 for(Int_t i = 0; i < 19; i++)
1698 Bool_t bc0 = kFALSE;
1701 for (Int_t itrack = 0; itrack < nTracks; itrack++)
1703 AliVTrack * track = (AliVTrack*)
fInputEvent->GetTrack(itrack) ;
1710 ULong_t status = track->GetStatus();
1727 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
1728 Double_t tof = -1000;
1729 Int_t trackBC = -1000 ;
1735 trackBC = track->GetTOFBunchCrossing(bz);
1738 tof = track->GetTOFsignal()*1e-3;
1743 if (trackBC != 0 && trackBC != AliVTrack::kTOFBCNA)
fVertexBC = trackBC;
1744 else if(trackBC == 0) bc0 = kTRUE;
1762 fMomentum.SetPxPyPzE(pTrack[0],pTrack[1],pTrack[2],0);
1766 Float_t dcaTPC =-999;
1768 if(
fDataType ==
kAOD ) dcaTPC = ((AliAODTrack*) track)->DCA();
1773 Double_t dca[2] = {1e6,1e6};
1774 Double_t covar[3] = {1e6,1e6,1e6};
1775 Bool_t okDCA = track->PropagateToDCA(
fInputEvent->GetPrimaryVertex(),bz,100.,dca,covar);
1804 AliDebug(2,Form(
"Selected tracks pt %3.2f, phi %3.2f deg, eta %3.2f",
1820 AliDebug(1,Form(
"AOD entries %d, input tracks %d, pass status %d, multipliticy %d",
fCTSTracks->GetEntriesFast(), nTracks, nstatus,
fTrackMult));
1850 vindex =
fMixedEvent->EventIndexForCaloCluster(iclus);
1858 AliDebug(2,Form(
"Input cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1866 if(clus->GetNLabels()==0 || clus->GetLabel() < 0)
return;
1892 if(
GetCaloUtils()->IsRecalculationOfClusterPositionOn())
1900 if(
GetCaloUtils()->GetEMCALRecoUtils()->IsTimeRecalibrationOn())
1902 Double_t tof = clus->GetTOF();
1933 AliDebug(2,Form(
"Bad cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
1954 AliDebug(5,Form(
"Correct Non Lin: Old E %3.2f, New E %3.2f",
1959 if(
GetCaloUtils()->GetEMCALRecoUtils()->IsClusterEnergySmeared() )
1964 AliDebug(5,Form(
"Smear energy: Old E %3.2f, New E %3.2f",clus->E(),rdmEnergy));
1966 clus->SetE(rdmEnergy);
1976 Double_t tof = clus->GetTOF()*1e9;
1978 Int_t bc = TMath::Nint(tof/50) + 9;
1990 Bool_t bEMCAL = kFALSE;
1991 Bool_t bDCAL = kFALSE;
2011 Bool_t shared = kFALSE;
2014 AliDebug(2,Form(
"Masked collumn: cluster E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
2018 if(
GetCaloUtils()->MaskFrameCluster(iSupMod, ieta))
return;
2035 AliDebug(2,Form(
"Out of time window E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f, time %e",
2059 Double_t distBad = clus->GetDistanceToBadChannel() ;
2061 if(distBad < 0.) distBad=9999. ;
2074 AliDebug(2,Form(
"Smear shower shape - Original: %2.4f\n", clus->GetM02()));
2093 AliDebug(2,Form(
"Selected clusters (EMCAL%d, DCAL%d), E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
2102 clus->SetID(iclus) ;
2115 AliDebug(1,
"Begin");
2125 for(Int_t i = 0; i < 19; i++)
2134 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
2135 for (Int_t iclus = 0; iclus < nclusters; iclus++)
2137 AliVCluster * clus = 0;
2138 if ( (clus =
fInputEvent->GetCaloCluster(iclus)) )
2140 if (clus->IsEMCAL())
2153 TClonesArray * clusterList = 0x0;
2170 Int_t nclusters = clusterList->GetEntriesFast();
2171 for (Int_t iclus = 0; iclus < nclusters; iclus++)
2173 AliVCluster * clus =
dynamic_cast<AliVCluster*
> (clusterList->At(iclus));
2176 else AliWarning(
"Null cluster in list!");
2184 for(Int_t i = 0; i < 19; i++)
2190 for (Int_t iclus = 0; iclus <
fInputEvent->GetNumberOfCaloClusters(); iclus++)
2192 AliVCluster * clus = 0;
2194 if ( (clus =
fInputEvent->GetCaloCluster(iclus)) )
2196 if (clus->IsEMCAL())
2201 Double_t tof = clus->GetTOF();
2216 Int_t bc = TMath::Nint(tof/50) + 9;
2252 AliDebug(1,
"Begin");
2255 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
2256 for (Int_t iclus = 0; iclus < nclusters; iclus++)
2258 AliVCluster * clus =
fInputEvent->GetCaloCluster(iclus) ;
2259 if ( !clus ) continue ;
2261 if ( !clus->IsPHOS() )
continue ;
2268 if( clus->GetType() == AliVCluster::kPHOSCharged )
continue ;
2289 if(
GetCaloUtils()->ClusterContainsBadChannel(
kPHOS,clus->GetCellsAbsId(), clus->GetNCells()))
2302 vindex =
fMixedEvent->EventIndexForCaloCluster(iclus);
2333 Double_t distBad = clus->GetDistanceToBadChannel() ;
2335 if(distBad < 0.) distBad=9999. ;
2348 AliDebug(2,Form(
"Selected clusters E %3.2f, pt %3.2f, phi %3.2f deg, eta %3.2f",
2355 clus->SetID(iclus) ;
2359 AliDebug(1,Form(
"AOD entries %d",
fPHOSClusters->GetEntriesFast())) ;
2389 AliESDVZERO* esdV0 =
dynamic_cast<AliESDVZERO*
> (v0);
2390 for (Int_t i = 0; i < 32; i++)
2394 fV0ADC[0] += (Int_t)esdV0->GetAdcV0C(i);
2395 fV0ADC[1] += (Int_t)esdV0->GetAdcV0A(i);
2398 fV0Mul[0] += (Int_t)v0->GetMultiplicityV0C(i);
2399 fV0Mul[1] += (Int_t)v0->GetMultiplicityV0A(i);
2406 AliDebug(1,
"Cannot retrieve V0 ESD! Run w/ null V0 charges");
2417 AliDebug(2,
"Begin");
2424 AliFatal(
"No non-standard jet branch name specified. Specify among existing ones.");
2449 AliDebug(1,
"Begin");
2456 AliFatal(
"No background jet branch name specified. Specify among existing ones.");
2470 AliDebug(1,
"FillInputBackgroundJets");
2485 Int_t trigtimes[30], globCol, globRow,ntimes, i;
2492 AliVCaloTrigger *caloTrigger =
GetInputEvent()->GetCaloTrigger(
"EMCAL" );
2496 AliError(
"Trigger patches input (AliVCaloTrigger) not available in data!");
2503 if( caloTrigger->GetEntries() > 0 )
2506 caloTrigger->Reset();
2509 while( caloTrigger->Next() )
2512 caloTrigger->GetPosition( globCol, globRow );
2518 caloTrigger->GetNL0Times( ntimes );
2526 caloTrigger->GetL0Times( trigtimes );
2530 for( i = 0; i < ntimes; i++ )
2533 if( trigtimes[i] >= tmin && trigtimes[i] <= tmax )
2539 patches.Set(nPatch+1);
2540 patches.AddAt(absId,nPatch++);
2547 caloTrigger->GetTriggerBits(bit);
2550 caloTrigger->GetL1TimeSum(sum);
2560 if(!isEGA1 && !isEJE1 && !isEGA2 && !isEJE2)
continue;
2562 Int_t patchsize = -1;
2563 if (isEGA1 || isEGA2) patchsize = 2;
2564 else if (isEJE1 || isEJE2) patchsize = 16;
2571 for(Int_t irow=0; irow < patchsize; irow++)
2573 for(Int_t icol=0; icol < patchsize; icol++)
2577 patches.Set(nPatch+1);
2578 patches.AddAt(absId,nPatch++);
2587 if(patches.GetSize()<=0) AliInfo(Form(
"No patch found! for triggers: %s and selected <%s>",
2624 TClonesArray * clusterList = 0;
2635 Int_t nclusters =
fInputEvent->GetNumberOfCaloClusters();
2637 nclusters = clusterList->GetEntriesFast();
2639 Int_t nPatch = patches.GetSize();
2643 Float_t tofPatchMax = 100000;
2644 Float_t ePatchMax =-1;
2646 Float_t tofMax = 100000;
2650 Int_t idclusMax =-1;
2651 Bool_t badClMax = kFALSE;
2652 Bool_t badCeMax = kFALSE;
2653 Bool_t exoMax = kFALSE;
2655 Int_t absIdMaxMax = -1;
2657 Int_t nOfHighECl = 0 ;
2667 Float_t minE = triggerThreshold / 2.;
2673 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));
2678 for (Int_t iclus = 0; iclus < nclusters; iclus++)
2680 AliVCluster * clus = 0;
2681 if(clusterList) clus = (AliVCluster*) clusterList->At(iclus);
2684 if ( !clus ) continue ;
2686 if ( !clus->IsEMCAL() )
continue ;
2689 if ( clus->E() < minE )
continue ;
2695 clus->GetCellsAbsId(),clus->GetNCells());
2696 UShort_t cellMax[] = {(UShort_t) absIdMax};
2713 if(!exotic && clus->GetNCells() < 2) exotic = kTRUE;
2715 Float_t
energy = clus->E();
2716 Int_t idclus = clus->GetID();
2718 Double_t tof = clus->GetTOF();
2737 badClMax = badCluster;
2742 absIdMaxMax = absIdMax;
2747 if(!badCluster && !exotic)
2753 for(Int_t iabsId =0; iabsId < nPatch; iabsId++)
2760 for(Int_t ipatch = 0; ipatch < 4; ipatch++)
2762 if(absIdMax == absIDCell[ipatch])
2765 if(energy > ePatchMax)
2788 tofPatchMax = tofMax;
2797 Double_t tofPatchMaxUS = TMath::Abs(tofPatchMax);
2832 Int_t patchAbsIdOpenTime = -1;
2833 for(Int_t iabsId =0; iabsId < patchOpen.GetSize(); iabsId++)
2836 patchAbsIdOpenTime = patchOpen.At(iabsId);
2841 for(Int_t ipatch = 0; ipatch < 4; ipatch++)
2843 if(absIdMaxMax == absIDCell[ipatch])
2852 Int_t patchAbsId = -1;
2853 Int_t globalCol = -1;
2854 Int_t globalRow = -1;
2859 Int_t patchAbsIdNeigh = -1;
2860 for(Int_t icol = globalCol-1; icol <= globalCol+1; icol++)
2862 if(icol < 0 || icol > 47)
continue;
2864 for(Int_t irow = globalRow; irow <= globalRow+1; irow++)
2866 if(irow < 0 || irow > 63)
continue;
2870 if ( patchAbsIdNeigh < 0 )
continue;
2872 for(Int_t iabsId =0; iabsId < patches.GetSize(); iabsId++)
2874 if(patchAbsIdNeigh == patches.At(iabsId))
2885 Int_t patchAbsIdNeighOpenTime = -1;
2886 for(Int_t icol = globalCol-1; icol <= globalCol+1; icol++)
2888 if(icol < 0 || icol > 47)
continue;
2890 for(Int_t irow = globalRow; irow <= globalRow+1; irow++)
2892 if(irow < 0 || irow > 63)
continue;
2896 if ( patchAbsIdNeighOpenTime < 0 )
continue;
2898 for(Int_t iabsId =0; iabsId < patchOpen.GetSize(); iabsId++)
2900 if(patchAbsIdNeighOpenTime == patchOpen.At(iabsId))
2930 AliVCaloTrigger *caloTrigger =
GetInputEvent()->GetCaloTrigger(
"EMCAL" );
2981 printf(
"***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
2982 printf(
"Task name : %s\n",
fTaskName.Data()) ;
2984 printf(
"CTS Min pT : %2.1f GeV/c\n",
fCTSPtMin) ;
2985 printf(
"EMCAL Min pT : %2.1f GeV/c\n",
fEMCALPtMin) ;
2986 printf(
"PHOS Min pT : %2.1f GeV/c\n",
fPHOSPtMin) ;
2987 printf(
"CTS Max pT : %2.1f GeV/c\n",
fCTSPtMax) ;
2988 printf(
"EMCAL Max pT : %2.1f GeV/c\n",
fEMCALPtMax) ;
2989 printf(
"PHOS Max pT : %2.1f GeV/c\n",
fPHOSPtMax) ;
2995 printf(
"Use CTS = %d\n",
fFillCTS) ;
3007 printf(
"Use Triggers selected in SE base class %d; If not what Trigger Mask? %d; MB Trigger Mask for mixed %d \n",
3031 Int_t ncellsSM3 = 0;
3032 for(Int_t icell = 0; icell <
fInputEvent->GetEMCALCells()->GetNumberOfCells(); icell++)
3034 Int_t absID =
fInputEvent->GetEMCALCells()->GetCellNumber(icell);
3036 if(
fInputEvent->GetEMCALCells()->GetAmplitude(icell) > 0.1 && sm==3) ncellsSM3++;
3039 Int_t ncellcut = 21;
3042 if(ncellsSM3 >= ncellcut)
3044 AliDebug(1,Form(
"Reject event with ncells in SM3 %d, cut %d, trig %s",
3059 if(label < 0) return ;
3061 AliAODEvent * evt =
dynamic_cast<AliAODEvent*
> (
fInputEvent) ;
3064 TClonesArray * arr =
dynamic_cast<TClonesArray*
>(evt->FindListObject(
"mcparticles")) ;
3067 if(label < arr->GetEntriesFast())
3069 AliAODMCParticle * particle =
dynamic_cast<AliAODMCParticle *
>(arr->At(label));
3070 if(!particle) return ;
3072 if(label == particle->Label())
return ;
3078 for(Int_t ind = 0; ind < arr->GetEntriesFast(); ind++ )
3080 AliAODMCParticle * particle =
dynamic_cast<AliAODMCParticle *
>(arr->At(ind));
3081 if(!particle) continue ;
3083 if(label == particle->Label())
3128 AliDebug(1,Form(
"Select trigger mask bit %d - Trigger Event %s - Select <%s>",
3246 AliDebug(1,Form(
"Event bits: \n \t MB %d, Cen %d, Sem %d, L0 %d, L1G1 %d, L1G2 %d, L1J1 %d, L1J2 %d",
3266 TFile*
file = AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile();
3268 const TList *clist = file->GetStreamerInfoCache();
3272 TStreamerInfo *cinfo = (TStreamerInfo*)clist->FindObject(
"AliESDCaloTrigger");
3276 cinfo = (TStreamerInfo*)clist->FindObject(
"AliAODCaloTrigger");
3282 Int_t classversionid = cinfo->GetClassVersion();
3285 if (classversionid >= verid)
3290 }
else AliInfo(
"AliCaloTrackReader()::SetEventTriggerBit() - Streamer info for trigger class not available, bit not changed");
3291 }
else AliInfo(
"AliCaloTrackReader::SetEventTriggerBit() - Streamer list not available!, bit not changed");
3320 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)
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.
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)
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.
void SetGeneratorMinMaxParticles()
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 Bool_t IsHIJINGLabel(Int_t label)
virtual AliGenEventHeader * GetGenEventHeader() 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)
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.
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.
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)
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
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.
virtual TObjString * GetListOfParameters()
Save parameters used for analysis in a string.
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
virtual Int_t GetTrackID(AliVTrack *track)
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 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.
Int_t GetNMaskCellColumns() const
AliFiducialCut * fFiducialCut
Acceptance cuts.
Bool_t fRejectEMCalTriggerEventsWith2Tresholds
Reject events EG2 also triggered by EG1 or EJ2 also triggered by EJ1.
TH1F * fhPHOSClusterCutsE[7]
! Control histogram on the different PHOS cluster selection cuts, E
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.
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.
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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 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
void SetPythiaEventHeader(AliGenPythiaEventHeader *py)
TObjArray * fCTSTracks
Temporal array with tracks.
Int_t fTriggerPatchTimeWindow[2]
Trigger patch selection window.
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.
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.
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 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.
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.
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)
Bool_t CheckCellFiducialRegion(AliVCluster *cluster, AliVCaloCells *cells) const
Bool_t IsEventEMCALL0() const