class TAxis;
class TLorentzVector;
class TList;
+class THashList;
class AliMergeableCollection;
class AliCounterCollection;
class AliVParticle;
class AliAODEvent;
class AliESDEvent;
class AliCFGridSparse;
+class AliMuonEventCuts;
class AliMuonTrackCuts;
class AliMuonPairCuts;
+class AliVVertex;
+class AliUtilityMuonAncestor;
class AliVAnalysisMuon : public AliAnalysisTaskSE {
public:
virtual void FinishTaskOutput();
void SetCentralityClasses(Int_t nCentralityBins = -1, Double_t* centralityBins = 0x0);
+ TAxis* GetCentralityClasses() const;
+ Bool_t SetCentralityClassesFromOutput();
- void SetTrigClassPatterns(TString pattern = "CINT CMU !CMUP CMBAC CPBI !-ACE- !-AC- !-E- !WU !EGA !EJE");
+ void SetTrigClassPatterns(const TString pattern);
+ TString GetDefaultTrigClassPatterns() const;
+ /// Get trigger classes
+ TList* GetAllSelectedTrigClasses() const;
+
void SetTerminateOptions(TString physSel="All", TString trigClass="ANY", TString centralityRange="", TString furtherOpts="");
+ /// Get muon event cuts
+ AliMuonEventCuts* GetMuonEventCuts() { return fMuonEventCuts; }
/// Get muon track cuts
AliMuonTrackCuts* GetMuonTrackCuts() { return fMuonTrackCuts; }
/// Get muon pair cuts
Int_t ivar, TString labelName,
Double_t varMin, Double_t varMax,
TString option = "");
+
+ void SetWeight ( TObject* wgtObj );
+ TObject* GetWeight ( const char* wgtName );
+
+ enum {
+ kPhysSelPass, ///< Physics selected events
+ kPhysSelReject, ///< Events non-passing selection
+ kNselections ///< Number of selections
+ };
+
+ enum {
+ kCharmMu, ///< Mu from charm
+ kBeautyMu, ///< Mu from beauty
+ kQuarkoniumMu, ///< Mu from resonance
+ kWbosonMu, ///< Mu from W
+ kZbosonMu, ///< Mu from Z
+ kDecayMu, ///< Decay mu
+ kSecondaryMu, ///< Secondary mu
+ kRecoHadron, ///< Reconstructed hadron
+ kUnidentified, ///< Particle that fails matching kine
+ kNtrackSources ///< Total number of track sources
+ };
+
protected:
/////////////////////
// Utility methods //
/////////////////////
-
- // Transparently handle tracks in ESD/AOD
- Int_t GetNTracks();
- AliVParticle* GetTrack(Int_t itrack);
- TLorentzVector GetTrackPair(AliVParticle* track1, AliVParticle* track2) const;
-
+
// Methods for MC
- Bool_t IsMC();
- Int_t GetNMCTracks();
- AliVParticle* GetMCTrack(Int_t trackLabel);
- Int_t GetMotherIndex(AliVParticle* mcParticle);
- Int_t GetDaughterIndex(AliVParticle* mcParticle, Int_t idaughter);
- Int_t GetParticleType(AliVParticle* track);
- Int_t RecoTrackMother(AliVParticle* mcParticle);
+ Int_t GetParticleType ( AliVParticle* track );
// Methods for mergeable object collections
Bool_t AddObjectToCollection(TObject* object, Int_t index = -1);
TObject* GetMergeableObject(TString physSel, TString trigClassName, TString centrality, TString objectName);
TObject* GetSum(TString physSel, TString trigClassNames, TString centrality, TString objectPattern);
- // A useful constant
- Double_t MuonMass2() const;
-
- // Handle triggers
- Bool_t TrackPtCutMatchTrigClass(AliVParticle* track, TString trigClassName);
- Int_t GetTrigClassPtCutLevel(TString trigClassName);
-
- enum {
- kPhysSelPass, ///< Physics selected events
- kPhysSelReject, ///< Events non-passing selection
- kNselections ///< Number of selections
- };
-
- enum {
- kCharmMu, ///< Mu from charm
- kBeautyMu, ///< Mu from beauty
- kQuarkoniumMu, ///< Mu from resonance
- kWbosonMu, ///< Mu from W
- kDecayMu, ///< Decay mu
- kSecondaryMu, ///< Secondary mu
- kRecoHadron, ///< Reconstructed hadron
- kUnidentified, ///< Particle that fails matching kine
- kNtrackSources ///< Total number of track sources
- };
+ AliMuonEventCuts* fMuonEventCuts; ///< Muon event cuts
AliMuonTrackCuts* fMuonTrackCuts; ///< Muon track cuts
AliMuonPairCuts* fMuonPairCuts; ///< Muon pair track cuts
AliESDEvent* fESDEvent; //!< ESD event, not owner
TObjArray* fChargeKeys; ///< Muon charge keys
TObjArray* fSrcKeys; ///< MC sources names
TObjArray* fPhysSelKeys; ///< Physics selection names
- TList* fTriggerClasses; ///< List of trigger classes
- TAxis* fCentralityClasses; ///< Centrality classes
+ THashList* fWeights; ///< List of objects to weight histograms
+ AliUtilityMuonAncestor* fUtilityMuonAncestor; ///< Utility to get the muon ancestor
AliCounterCollection* fEventCounters; //!< event counters
AliMergeableCollection* fMergeableCollection; //!< collection of mergeable objects
void InitKeys();
void CreateMergeableObjects(TString physSel, TString trigClassName, TString centrality);
- TObjArray* BuildTriggerClasses(TString firedTrigClasses);
-
- TObjArray* fSelectedTrigPattern; ///< List of triggers to be kept
- TObjArray* fRejectedTrigPattern; ///< List of triggers to be rejected
- TObjArray* fSelectedTrigLevel; ///< Track-trigger pt cut for selected trigger class
TObjArray* fOutputPrototypeList; //!< List of prototype object to be used in collection
- ClassDef(AliVAnalysisMuon, 2);
+ ClassDef(AliVAnalysisMuon, 6);
};
#endif