]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/muon/AliVAnalysisMuon.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / muon / AliVAnalysisMuon.h
index 6c706fbab58fb3bd12a590f8ab09c51eadd1fb4f..ebd142756fd5e5ad1d7ecf6b5d21be8862d9d381 100644 (file)
@@ -16,14 +16,18 @@ class TObjArray;
 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:
@@ -41,10 +45,18 @@ class AliVAnalysisMuon : public AliAnalysisTaskSE {
   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
@@ -55,6 +67,29 @@ class AliVAnalysisMuon : public AliAnalysisTaskSE {
                                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:
   
@@ -77,51 +112,17 @@ class AliVAnalysisMuon : public AliAnalysisTaskSE {
   /////////////////////
   // 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
@@ -130,8 +131,8 @@ class AliVAnalysisMuon : public AliAnalysisTaskSE {
   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
@@ -143,14 +144,9 @@ class AliVAnalysisMuon : public AliAnalysisTaskSE {
   
   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