Update of Single Muon analysis to be included in the official ESD->AOD analysis train...
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskSingleMu.h
index fd37d27..a3baf70 100644 (file)
@@ -4,53 +4,76 @@
 ///
 //  Author Diego Stocco
 
-#include "AliAODEvent.h"
-#include "AliAODTrack.h"
+class TList;
+class AliMCParticle;
+class AluMCEvent;
 
-class AliAnalysisTaskSingleMu : public AliAnalysisTask {
+class AliAnalysisTaskSingleMu : public AliAnalysisTaskSE {
  public:
   AliAnalysisTaskSingleMu(const char *name = "AliAnalysisTaskSingleMu");
-  virtual ~AliAnalysisTaskSingleMu() {}
-  
-  virtual void   ConnectInputData(Option_t *);
-  virtual void   CreateOutputObjects();
-  virtual void   Exec(Option_t *option);
-  virtual void   Terminate(Option_t *);
-
- protected:
-  Bool_t FillTrackVariables(AliAODTrack &muonTrack);
-  
-  void InitVariables();
+  virtual ~AliAnalysisTaskSingleMu();
 
- private:
   AliAnalysisTaskSingleMu(const AliAnalysisTaskSingleMu&);
   AliAnalysisTaskSingleMu& operator=(const AliAnalysisTaskSingleMu&);
+  
+  virtual void   UserCreateOutputObjects();
+  virtual void   UserExec(Option_t *option);
+  virtual void   Terminate(Option_t *option);
+  
+ private:
 
-  AliAODEvent *fAOD; //!< ESDevent object
+  void SetFlagsFromHandler ();
 
-  TTree *fResults; //!< Tree with results
+  enum {
+    kNoMatchTrig,  // No match with trigger
+    kAllPtTrig,    // Match All Pt
+    kLowPtTrig,    // Match Low Pt
+    kHighPtTrig,   // Match High Pt
+    kNtrigCuts     // Total number of trigger types
+  };
+  
+  // Histograms for data
+  enum {
+    // 1D histos
+    kHistoPt,        ///< Pt distribution
+    kHistoDCA,       ///< DCA distribution
+    kHistoVz,        ///< Interaction vertex distribution
+    kHistoEta,       ///< Eta distribution
+    kHistoRapidity,  ///< Rapidity distribution
+    // 2D histos
+    kHistoPtDCA,     ///< DCA vs Pt distribution
+    kHistoPtVz,      ///< Interaction vertex vs Pt distribution
+    kHistoPtRapidity ///< Rapidity vs Pt distribution
+  };
 
+  // Histograms for MC
   enum {
-    kVarPt,     //!< Muon pt
-    kVarY,      //!< Muon rapidity
-    kVarPhi,    //!< Muon phi
-    kVarVz,     //!< Primary vertex longitudinal position
-    kVarDCA,    //!< Transverse distance at vertex
-    kNfloatVars
+    kHistoPtResolution, ///< Pt resolution
+    kHistoPtDCAType,    ///< DCA vs Pt distribution
+    kHistoPtVzType      ///< Interaction vertex vs Pt distribution
   };
 
   enum {
-    kVarTrig,   //!< Matched trigger
-    kNintVars
+    kCharmMu,       ///< Mu from charm
+    kBeautyMu,      ///< Mu from beauty
+    kPrimaryMu,     ///< Primary mu
+    kSecondaryMu,   ///< Secondary mu
+    kRecoHadron,    ///< Reconstructed hadron
+    kUnknownPart,   ///< Particle that fails matching kine
+    kNtrackSources  ///< Total number of track sources
   };
-  
 
-  Float_t* fVarFloat; //!< Array of float variables
-  Int_t* fVarInt;     //!< Array of int variables
+  Int_t GetHistoIndex(Int_t histoTypeIndex, Int_t trigIndex, Int_t srcIndex = -1);
+
+  void FillTriggerHistos(Int_t histoIndex, Int_t matchTrig, Int_t motherType,
+                        Float_t var1, Float_t var2 = 0. , Float_t var3 = 0.);
   
-  TString* fFloatVarName; //!< Float variable names for branches
-  TString* fIntVarName;   //!< Intt variable names for branches
+  Int_t RecoTrackMother(AliMCParticle* mcTrack, AliMCEvent* mcEvent);
+
+  Bool_t fUseMC;  //!< Flag indicating that Monte Carlo information is available
+  TList* fHistoList;   //!< List of histograms for data
+  TList* fHistoListMC; //!< List of histograms for MC
 
-  ClassDef(AliAnalysisTaskSingleMu, 0); // Single muon analysis
+  ClassDef(AliAnalysisTaskSingleMu, 1); // Single muon analysis
 };