void SetEMCALEMax (Float_t e) { SetEMCALPtMax(e) ; }
void SetPHOSEMax (Float_t e) { SetPHOSPtMax (e) ; }
- Double_t GetEMCALTimeCutMin() const { return fEMCALTimeCutMin ; }
- Double_t GetEMCALTimeCutMax() const { return fEMCALTimeCutMax ; }
+ //Time cut
+
+ Double_t GetEMCALTimeCutMin() const { return fEMCALTimeCutMin ; }
+ Double_t GetEMCALTimeCutMax() const { return fEMCALTimeCutMax ; }
- void SetEMCALTimeCut(Double_t a, Double_t b) { fEMCALTimeCutMin = a;
+ Bool_t IsInTimeWindow(const Double_t tof, const Float_t energy) const ;
+
+ void SetEMCALTimeCut(Double_t a, Double_t b) { fEMCALTimeCutMin = a ;
fEMCALTimeCutMax = b ; } // ns
+
+ void SetEMCALParametrizedMinTimeCut(Int_t i, Float_t par) { fEMCALParamTimeCutMin[i] = par ; }
+ void SetEMCALParametrizedMaxTimeCut(Int_t i, Float_t par) { fEMCALParamTimeCutMax[i] = par ; }
+
+ void SwitchOnUseParametrizedTimeCut() { fUseParamTimeCut = kTRUE ; }
+ void SwitchOffUseParametrizedTimeCut() { fUseParamTimeCut = kFALSE ; }
+
// Fidutial cuts
virtual AliFiducialCut * GetFiducialCut() {
if(!fFiducialCut) fFiducialCut = new AliFiducialCut();
virtual void FillInputPHOSCells() ;
virtual void FillInputVZERO() ;
- Int_t GetV0Signal(Int_t i) const { return fV0ADC[i] ; }
- Int_t GetV0Multiplicity(Int_t i) const { return fV0Mul[i] ; }
+ Int_t GetV0Signal(Int_t i) const { return fV0ADC[i] ; }
+ Int_t GetV0Multiplicity(Int_t i) const { return fV0Mul[i] ; }
- void SetEMCALClusterListName(TString &name) { fEMCALClustersListName = name ; }
- TString GetEMCALClusterListName() const { return fEMCALClustersListName ; }
+ void SetEMCALClusterListName(TString &name) { fEMCALClustersListName = name ; }
+ TString GetEMCALClusterListName() const { return fEMCALClustersListName ; }
// Arrayes with clusters/track/cells access method
- virtual TObjArray* GetCTSTracks() const { return fCTSTracks ; }
- virtual TObjArray* GetEMCALClusters() const { return fEMCALClusters ; }
- virtual TObjArray* GetPHOSClusters() const { return fPHOSClusters ; }
- virtual AliVCaloCells* GetEMCALCells() const { return fEMCALCells ; }
- virtual AliVCaloCells* GetPHOSCells() const { return fPHOSCells ; }
+ virtual TObjArray* GetCTSTracks() const { return fCTSTracks ; }
+ virtual TObjArray* GetEMCALClusters() const { return fEMCALClusters ; }
+ virtual TObjArray* GetPHOSClusters() const { return fPHOSClusters ; }
+ virtual AliVCaloCells* GetEMCALCells() const { return fEMCALCells ; }
+ virtual AliVCaloCells* GetPHOSCells() const { return fPHOSCells ; }
//-------------------------------------
// Event/track selection methods
TString GetFiredTriggerClassName() const { return fFiredTriggerClassName ; }
TString GetFiredTriggerClasses() ;
- UInt_t GetEventTriggerMask() const { return fEventTriggerMask ; }
+ UInt_t GetEventTriggerMask() const { return fEventTriggerMask ; }
void SetEventTriggerMaks(UInt_t evtTrig = AliVEvent::kAny)
{ fEventTriggerMask = evtTrig ; }
+
+ UInt_t GetMixEventTriggerMask() const { return fMixEventTriggerMask ; }
+ void SetMixEventTriggerMaks(UInt_t evtTrig = AliVEvent::kAnyINT)
+ { fMixEventTriggerMask = evtTrig ; }
+
- Bool_t IsEventTriggerAtSEOn() const { return fEventTriggerAtSE ; }
- void SwitchOnEventTriggerAtSE() { fEventTriggerAtSE = kTRUE ; }
- void SwitchOffEventTriggerAtSE() { fEventTriggerAtSE = kFALSE ; }
+ Bool_t IsEventTriggerAtSEOn() const { return fEventTriggerAtSE ; }
+ void SwitchOnEventTriggerAtSE() { fEventTriggerAtSE = kTRUE ; }
+ void SwitchOffEventTriggerAtSE() { fEventTriggerAtSE = kFALSE ; }
void SwitchOnEventSelection() { fDoEventSelection = kTRUE ; }
void SwitchOffEventSelection() { fDoEventSelection = kFALSE ; }
void SwitchOffPrimaryVertexSelection() { fUseEventsWithPrimaryVertex = kFALSE ; }
Bool_t IsPrimaryVertexSelectionDone() const { return fUseEventsWithPrimaryVertex ; }
+ Bool_t IsPileUpFromSPD() const ;
+ Bool_t IsPileUpFromEMCal() const ;
+ Bool_t IsPileUpFromSPDAndEMCal() const ;
+ Bool_t IsPileUpFromSPDOrEMCal() const ;
+ Bool_t IsPileUpFromSPDAndNotEMCal() const ;
+ Bool_t IsPileUpFromEMCalAndNotSPD() const ;
+ Bool_t IsPileUpFromNotSPDAndNotEMCal() const ;
+
+ void SetPileUpParamForSPD (Int_t i, Double_t param)
+ { fPileUpParamSPD[i] = param ; }
+ void SetPileUpParamForEMCal(Int_t param) { fNPileUpClustersCut = param ; }
+
+ Int_t GetNPileUpClusters() { return fNPileUpClusters ; }
+ Int_t GetNNonPileUpClusters() { return fNNonPileUpClusters ; }
+
// Track selection
ULong_t GetTrackStatus() const { return fTrackStatus ; }
void SetTrackStatus(ULong_t bit) { fTrackStatus = bit ; }
AliESDtrackCuts* GetTrackCuts() const { return fESDtrackCuts ; }
void SetTrackCuts(AliESDtrackCuts * cuts) ;
+
+ void SwitchOnConstrainTrackToVertex() { fConstrainTrack = kTRUE ; }
+ void SwitchOffConstrainTrackToVertex() { fConstrainTrack = kFALSE ; }
+
+ void SwitchOnAODHybridTrackSelection() { fSelectHybridTracks = kTRUE ; }
+ void SwitchOffAODHybridTrackSelection() { fSelectHybridTracks = kFALSE ; }
Int_t GetTrackMultiplicity() const { return fTrackMult ; }
Float_t GetTrackMultiplicityEtaCut() const { return fTrackMultEtaCut ; }
//--------------------------
// Centrality / Event Plane
//--------------------------
- virtual AliCentrality* GetCentrality() const { return fInputEvent->GetCentrality() ; } //Look in AOD reader, different there
+ virtual AliCentrality* GetCentrality() const { if(fDataType!=kMC) return fInputEvent->GetCentrality() ;
+ else return 0x0 ; }
virtual void SetCentralityClass(TString name) { fCentralityClass = name ; }
virtual void SetCentralityOpt(Int_t opt) { fCentralityOpt = opt ; }
virtual TString GetCentralityClass() const { return fCentralityClass ; }
virtual Float_t GetCentralityBin(Int_t i) const { if(i < 0 || i > 1) return 0 ;
else return fCentralityBin[i] ; }
- virtual AliEventplane* GetEventPlane() const { return fInputEvent->GetEventplane() ; }
+ virtual AliEventplane* GetEventPlane() const { if(fDataType!=kMC) return fInputEvent->GetEventplane() ;
+ else return 0x0 ; }
+ virtual Double_t GetEventPlaneAngle() const ;
virtual void SetEventPlaneMethod(TString m) { fEventPlaneMethod = m ; }
virtual TString GetEventPlaneMethod() const { return fEventPlaneMethod ; }
+ //--------------------
+ // Mixing
+ //--------------------
+
+ Int_t GetLastCaloMixedEvent() const { return fLastMixedCaloEvent ; }
+ Int_t GetLastTracksMixedEvent () const { return fLastMixedTracksEvent ; }
+
+ TList * GetListWithMixedEventsForCalo (Int_t bi) const { if(fListMixedCaloEvents) return fListMixedCaloEvents[bi] ; else return 0 ; }
+ TList * GetListWithMixedEventsForTracks(Int_t bi) const { if(fListMixedTracksEvents) return fListMixedTracksEvents [bi] ; else return 0 ; }
+
+ Bool_t ListWithMixedEventsForCaloExists() const { if(fListMixedCaloEvents) return kTRUE ;
+ else return kFALSE ; }
+
+ Bool_t ListWithMixedEventsForTracksExists() const { if(fListMixedTracksEvents) return kTRUE ;
+ else return kFALSE ; }
+
+ void SetLastCaloMixedEvent (Int_t e) { fLastMixedCaloEvent = e ; }
+ void SetLastTracksMixedEvent(Int_t e) { fLastMixedTracksEvent = e ; }
+
+ void SetListWithMixedEventsForCalo (TList ** l) {
+ if(fListMixedCaloEvents) printf("AliCaloTrackReader::SetListWithMixedEventsForCalo() - Track Mixing event list already set, nothing done\n");
+ else fListMixedCaloEvents = l ; }
+
+ void SetListWithMixedEventsForTracks(TList ** l) {
+ if(fListMixedTracksEvents) printf("AliCaloTrackReader::SetListWithMixedEventsForTracks() - Calorimeter Mixing event list already set, nothing done\n");
+ else fListMixedTracksEvents = l ; }
+
//-------------------------------------
// Other methods
//-------------------------------------
//Filtered kinematics in AOD
virtual TClonesArray* GetAODMCParticles(Int_t input = 0) const ;
- virtual AliAODMCHeader* GetAODMCHeader(Int_t input = 0) const ;
+ virtual AliAODMCHeader* GetAODMCHeader() const ;
virtual AliVEvent* GetInputEvent() const { return fInputEvent ; }
virtual AliVEvent* GetOriginalInputEvent() const { return 0x0 ; }
virtual Float_t GetPtHardAndJetFactor() const { return fPtHardAndJetPtFactor ; }
virtual void SetPtHardAndJetPtFactor(Float_t factor) { fPtHardAndJetPtFactor = factor ; }
+ virtual Bool_t ComparePtHardAndClusterPt() ;
+ virtual Bool_t IsPtHardAndClusterPtComparisonSet() const { return fComparePtHardAndClusterPt ; }
+ virtual void SetPtHardAndClusterPtComparison(Bool_t compare) { fComparePtHardAndClusterPt = compare ; }
+ virtual Float_t GetPtHardAndClusterFactor() const { return fPtHardAndClusterPtFactor ; }
+ virtual void SetPtHardAndClusterPtFactor(Float_t factor) { fPtHardAndClusterPtFactor = factor ; }
+
+
//MC reader methods, declared there to allow compilation, they are only used in the MC reader:
virtual void AddNeutralParticlesArray(TArrayI & /*array*/) { ; }
protected:
- Int_t fEventNumber; // Event number
- Int_t fDataType ; // Select MC:Kinematics, Data:ESD/AOD, MCData:Both
- Int_t fDebug; // Debugging level
- AliFiducialCut * fFiducialCut; //! Acceptance cuts
- Bool_t fCheckFidCut ; // Do analysis for clusters in defined region
+ Int_t fEventNumber; // Event number
+ Int_t fDataType ; // Select MC:Kinematics, Data:ESD/AOD, MCData:Both
+ Int_t fDebug; // Debugging level
+ AliFiducialCut * fFiducialCut; //! Acceptance cuts
+ Bool_t fCheckFidCut ; // Do analysis for clusters in defined region
Bool_t fComparePtHardAndJetPt; // In MonteCarlo, jet events, reject fake events with wrong jet energy.
Float_t fPtHardAndJetPtFactor; // Factor between ptHard and jet pT to reject/accept event.
- Float_t fCTSPtMin; // pT Threshold on charged particles
- Float_t fEMCALPtMin; // pT Threshold on emcal clusters
- Float_t fPHOSPtMin; // pT Threshold on phos clusters
- Float_t fCTSPtMax; // pT Threshold on charged particles
- Float_t fEMCALPtMax; // pT Threshold on emcal clusters
- Float_t fPHOSPtMax; // pT Threshold on phos clusters
- Double_t fEMCALTimeCutMin;// Remove clusters/cells with time smaller than this value, in ns
- Double_t fEMCALTimeCutMax;// Remove clusters/cells with time larger than this value, in ns
-
- TList * fAODBranchList ; //-> List with AOD branches created and needed in analysis
- TObjArray * fCTSTracks ; //-> temporal array with tracks
- TObjArray * fEMCALClusters ; //-> temporal array with EMCAL CaloClusters
- TObjArray * fPHOSClusters ; //-> temporal array with PHOS CaloClusters
- AliVCaloCells * fEMCALCells ; //! temporal array with EMCAL CaloCells
- AliVCaloCells * fPHOSCells ; //! temporal array with PHOS CaloCells
-
- AliVEvent * fInputEvent; //! pointer to esd or aod input
- AliAODEvent * fOutputEvent; //! pointer to aod output
- AliMCEvent * fMC; //! Monte Carlo Event Handler
-
- Bool_t fFillCTS; // use data from CTS
- Bool_t fFillEMCAL; // use data from EMCAL
- Bool_t fFillPHOS; // use data from PHOS
- Bool_t fFillEMCALCells; // use data from EMCAL
- Bool_t fFillPHOSCells; // use data from PHOS
+ Bool_t fComparePtHardAndClusterPt; // In MonteCarlo, jet events, reject events with too large cluster energy
+ Float_t fPtHardAndClusterPtFactor; // Factor between ptHard and cluster pT to reject/accept event.
+
+ Float_t fCTSPtMin; // pT Threshold on charged particles
+ Float_t fEMCALPtMin; // pT Threshold on emcal clusters
+ Float_t fPHOSPtMin; // pT Threshold on phos clusters
+ Float_t fCTSPtMax; // pT Threshold on charged particles
+ Float_t fEMCALPtMax; // pT Threshold on emcal clusters
+ Float_t fPHOSPtMax; // pT Threshold on phos clusters
+ Double_t fEMCALTimeCutMin; // Remove clusters/cells with time smaller than this value, in ns
+ Double_t fEMCALTimeCutMax; // Remove clusters/cells with time larger than this value, in ns
+ Float_t fEMCALParamTimeCutMin[4];// Remove clusters/cells with time smaller than parametrized value, in ns
+ Double_t fEMCALParamTimeCutMax[4];// Remove clusters/cells with time larger than parametrized value, in ns
+ Bool_t fUseParamTimeCut; // Use simple or parametrized time cut
+
+ TList * fAODBranchList ; //-> List with AOD branches created and needed in analysis
+ TObjArray * fCTSTracks ; //-> temporal array with tracks
+ TObjArray * fEMCALClusters ; //-> temporal array with EMCAL CaloClusters
+ TObjArray * fPHOSClusters ; //-> temporal array with PHOS CaloClusters
+ AliVCaloCells * fEMCALCells ; //! temporal array with EMCAL CaloCells
+ AliVCaloCells * fPHOSCells ; //! temporal array with PHOS CaloCells
+
+ AliVEvent * fInputEvent; //! pointer to esd or aod input
+ AliAODEvent * fOutputEvent; //! pointer to aod output
+ AliMCEvent * fMC; //! Monte Carlo Event Handler
+
+ Bool_t fFillCTS; // use data from CTS
+ Bool_t fFillEMCAL; // use data from EMCAL
+ Bool_t fFillPHOS; // use data from PHOS
+ Bool_t fFillEMCALCells; // use data from EMCAL
+ Bool_t fFillPHOSCells; // use data from PHOS
Bool_t fRecalculateClusters; // Correct clusters, recalculate them if recalibration parameters is given
Bool_t fSelectEmbeddedClusters; // Use only simulated clusters that come from embedding.
- ULong_t fTrackStatus ; // Track selection bit, select tracks refitted in TPC, ITS ...
- ULong_t fTrackFilterMask ; // Track selection bit, for AODs (any difference with track status?)
- AliESDtrackCuts *fESDtrackCuts ; // Track cut
- Int_t fTrackMult ; // Track multiplicity
- Float_t fTrackMultEtaCut ; // Track multiplicity eta cut
- Bool_t fReadStack ; // Access kine information from stack
- Bool_t fReadAODMCParticles ; // Access kine information from filtered AOD MC particles
+ ULong_t fTrackStatus ; // Track selection bit, select tracks refitted in TPC, ITS ...
+ ULong_t fTrackFilterMask ; // Track selection bit, for AODs (any difference with track status?)
+ AliESDtrackCuts *fESDtrackCuts ; // Track cut
+ Bool_t fConstrainTrack ; // Constrain Track to vertex
+ Bool_t fSelectHybridTracks ; // Select CTS tracks of type hybrid (only for AODs)
+ Int_t fTrackMult ; // Track multiplicity
+ Float_t fTrackMultEtaCut ; // Track multiplicity eta cut
+ Bool_t fReadStack ; // Access kine information from stack
+ Bool_t fReadAODMCParticles ; // Access kine information from filtered AOD MC particles
- TString fDeltaAODFileName ; // Delta AOD file name
- TString fFiredTriggerClassName; // Name of trigger event type used to do the analysis
+ TString fDeltaAODFileName ; // Delta AOD file name
+ TString fFiredTriggerClassName; // Name of trigger event type used to do the analysis
- UInt_t fEventTriggerMask ; // select this triggerered event
- Bool_t fEventTriggerAtSE; // select triggered event at SE base task or here
+ UInt_t fEventTriggerMask ; // select this triggerered event
+ UInt_t fMixEventTriggerMask ; // select this triggerered event for mixing, tipically kMB or kAnyINT
+ Bool_t fEventTriggerAtSE; // select triggered event at SE base task or here
- Bool_t fAnaLED; // Analyze LED data only.
+ Bool_t fAnaLED; // Analyze LED data only.
- TString fTaskName; // Name of task that executes the analysis
+ TString fTaskName; // Name of task that executes the analysis
- AliCalorimeterUtils * fCaloUtils ; // Pointer to CalorimeterUtils
+ AliCalorimeterUtils * fCaloUtils ; // Pointer to CalorimeterUtils
- AliMixedEvent * fMixedEvent ; //! mixed event object. This class is not the owner
- Int_t fNMixedEvent ; // number of events in mixed event buffer
- Double_t ** fVertex ; //! vertex array 3 dim for each mixed event buffer
+ AliMixedEvent * fMixedEvent ; //! mixed event object. This class is not the owner
+ Int_t fNMixedEvent ; // number of events in mixed event buffer
+ Double_t ** fVertex ; //! vertex array 3 dim for each mixed event buffer
+
+ TList ** fListMixedTracksEvents ; //! Container for tracks stored for different events, used in case of own mixing, set in analysis class
+ TList ** fListMixedCaloEvents; //! Container for photon stored for different events, used in case of own mixing, set in analysis class
+ Int_t fLastMixedTracksEvent ; // Temporary container with the last event added to the mixing list for tracks
+ Int_t fLastMixedCaloEvent ; // Temporary container with the last event added to the mixing list for photons
- Bool_t fWriteOutputDeltaAOD; // Write the created delta AOD objects into file
- Bool_t fOldAOD; // Old AODs, before revision 4.20
+ Bool_t fWriteOutputDeltaAOD; // Write the created delta AOD objects into file
+ Bool_t fOldAOD; // Old AODs, before revision 4.20
- Int_t fV0ADC[2] ; // Integrated V0 signal
- Int_t fV0Mul[2] ; // Integrated V0 Multiplicity
+ Int_t fV0ADC[2] ; // Integrated V0 signal
+ Int_t fV0Mul[2] ; // Integrated V0 Multiplicity
- Bool_t fCaloFilterPatch; // CaloFilter patch
- TString fEMCALClustersListName; // Alternative list of clusters produced elsewhere and not from InputEvent
+ Bool_t fCaloFilterPatch; // CaloFilter patch
+ TString fEMCALClustersListName; // Alternative list of clusters produced elsewhere and not from InputEvent
// Event selection
Float_t fZvtxCut ; // Cut on vertex position
Bool_t fDoV0ANDEventSelection; // Select events depending on V0, fDoEventSelection should be on
Bool_t fUseEventsWithPrimaryVertex ; // Select events with primary vertex
AliTriggerAnalysis* fTriggerAnalysis; // Access to trigger selection algorithm for V0AND calculation
-
+ Double_t fPileUpParamSPD[5]; // Parameters to pass to method IsPileupFromSPD: Int_t minContributors,
+ // Double_t minZdist,
+ // Double_t nSigmaZdist,
+ // Double_t nSigmaDiamXY,
+ // Double_t nSigmaDiamZ)
+ // Pile-up in EMCal
+ Int_t fNPileUpClusters; // Number of clusters with time avobe 20 ns
+ Int_t fNNonPileUpClusters; // Number of clusters with time below 20 ns
+ Int_t fNPileUpClustersCut; // Cut to select event as pile-up
+
//Centrality/Event plane
- TString fCentralityClass; // Name of selected centrality class
- Int_t fCentralityOpt; // Option for the returned value of the centrality, possible options 5, 10, 100
- Int_t fCentralityBin[2]; // Minimum and maximum value of the centrality for the analysis
- TString fEventPlaneMethod; // Name of event plane method, by default "Q"
+ TString fCentralityClass; // Name of selected centrality class
+ Int_t fCentralityOpt; // Option for the returned value of the centrality, possible options 5, 10, 100
+ Int_t fCentralityBin[2]; // Minimum and maximum value of the centrality for the analysis
+ TString fEventPlaneMethod; // Name of event plane method, by default "Q"
Bool_t fImportGeometryFromFile; // Import geometry settings in geometry.root file
TString fImportGeometryFilePath; // path fo geometry.root file
+
AliCaloTrackReader( const AliCaloTrackReader & r) ; // cpy ctor
AliCaloTrackReader & operator = (const AliCaloTrackReader & r) ; // cpy assignment
- ClassDef(AliCaloTrackReader,37)
+ ClassDef(AliCaloTrackReader,46)
} ;