ROOT logo
#ifndef ALIANALYSISTASKTRIGCHEFF_H
#define ALIANALYSISTASKTRIGCHEFF_H

/* $Id$ */ 

//
// Class for trigger chamber efficiency calculations
// and tests
//
// Author: Diego Stocco
//

#include "AliVAnalysisMuon.h"

class AliMuonTrackCuts;
class AliVParticle;
class TList;
class TObjArray;
class TString;

class AliAnalysisTaskTrigChEff : public AliVAnalysisMuon {
 public:
  AliAnalysisTaskTrigChEff();
  AliAnalysisTaskTrigChEff(const char *name, const AliMuonTrackCuts& cuts);
  virtual ~AliAnalysisTaskTrigChEff();

  void Terminate(Option_t *option);
  void FinishTaskOutput();

  void MyUserCreateOutputObjects();
  void ProcessEvent(TString physSel, const TObjArray& selectTrigClasses, TString centrality);

  TList* GetEffHistoList(TString physSel, TString trigClassNames, TString centrality, TString trackSelection);

//  /// Use ghost tracks in calculations
//  void SetUseGhostTracks(Bool_t useGhosts = kTRUE) { fUseGhosts = useGhosts; }

 private:

  AliAnalysisTaskTrigChEff(const AliAnalysisTaskTrigChEff&);
  AliAnalysisTaskTrigChEff& operator=(const AliAnalysisTaskTrigChEff&);

  enum {
    kBendingEff,     ///< Bending plane fired
    kNonBendingEff,  ///< Non-bending plane fired
    kBothPlanesEff,  ///< Both planes fired
    kAllTracks,      ///< tracks used for calculation
    kNcounts         ///< Number of count type
  };

  enum {
    kHchamberEff,    ///< Counts per cathode histogram index
    kHslatEff,       ///< Counts per slat histogram index
    kHboardEff,      ///< Counts per board histogram index
    kHcheckBoard,    ///< Check rejected tracks per board
    kNhistoTypes     ///< Check rejected tracks per board
  };

  enum {
    kNoMatch,       ///< No match with trigger
    kMatchApt,      ///< Match All Pt
    kMatchLpt,      ///< Match Low Pt
    kMatchHpt,      ///< Match High Pt
    kNtrigMatch     ///< Total number of matched types
  };
  
  enum {
    kSelectTrack,   ///< Selected track
    kNoSelectTrack, ///< Non selected tracks (includes ghosts)
    kNtrackSel      ///< Total number of track selection
  };
  
  enum {
    kEffFromTrack,  ///< Hit pattern from tracker track extrapolation
    kEffFromTrig,   ///< Hit pattern from trigger
    kNeffMethods    ///< Total number of efficiency methods
  };

  TString GetHistoName(Int_t itype, Int_t icount, Int_t ichamber, Int_t itrackSel, Int_t imatch, Int_t imethod);
  Bool_t FillEffHistoList(TString physSel, TString trigClassNames, TString centrality, TString trackSelection, TList* outList = 0x0);
  void InitLocalKeys();
 
  TObjArray* fTrackSelKeys;   ///< Selection names
  TObjArray* fCountTypeKeys;  ///< Count type keys
  TObjArray* fHistoTypeKeys;  ///< Base histogram name
  TObjArray* fEffMethodKeys;  ///< Efficiency methods keys
  TObjArray* fMatchTrigKeys;  ///< Match trigger names

//  Bool_t fUseGhosts; ///< Flag to use also the trigger tracks not matching the tracker in eff. calculation
  TList*  fList;     //!<TList output object

  ClassDef(AliAnalysisTaskTrigChEff, 4); // Trigger chamber efficiencies
};

#endif
 AliAnalysisTaskTrigChEff.h:1
 AliAnalysisTaskTrigChEff.h:2
 AliAnalysisTaskTrigChEff.h:3
 AliAnalysisTaskTrigChEff.h:4
 AliAnalysisTaskTrigChEff.h:5
 AliAnalysisTaskTrigChEff.h:6
 AliAnalysisTaskTrigChEff.h:7
 AliAnalysisTaskTrigChEff.h:8
 AliAnalysisTaskTrigChEff.h:9
 AliAnalysisTaskTrigChEff.h:10
 AliAnalysisTaskTrigChEff.h:11
 AliAnalysisTaskTrigChEff.h:12
 AliAnalysisTaskTrigChEff.h:13
 AliAnalysisTaskTrigChEff.h:14
 AliAnalysisTaskTrigChEff.h:15
 AliAnalysisTaskTrigChEff.h:16
 AliAnalysisTaskTrigChEff.h:17
 AliAnalysisTaskTrigChEff.h:18
 AliAnalysisTaskTrigChEff.h:19
 AliAnalysisTaskTrigChEff.h:20
 AliAnalysisTaskTrigChEff.h:21
 AliAnalysisTaskTrigChEff.h:22
 AliAnalysisTaskTrigChEff.h:23
 AliAnalysisTaskTrigChEff.h:24
 AliAnalysisTaskTrigChEff.h:25
 AliAnalysisTaskTrigChEff.h:26
 AliAnalysisTaskTrigChEff.h:27
 AliAnalysisTaskTrigChEff.h:28
 AliAnalysisTaskTrigChEff.h:29
 AliAnalysisTaskTrigChEff.h:30
 AliAnalysisTaskTrigChEff.h:31
 AliAnalysisTaskTrigChEff.h:32
 AliAnalysisTaskTrigChEff.h:33
 AliAnalysisTaskTrigChEff.h:34
 AliAnalysisTaskTrigChEff.h:35
 AliAnalysisTaskTrigChEff.h:36
 AliAnalysisTaskTrigChEff.h:37
 AliAnalysisTaskTrigChEff.h:38
 AliAnalysisTaskTrigChEff.h:39
 AliAnalysisTaskTrigChEff.h:40
 AliAnalysisTaskTrigChEff.h:41
 AliAnalysisTaskTrigChEff.h:42
 AliAnalysisTaskTrigChEff.h:43
 AliAnalysisTaskTrigChEff.h:44
 AliAnalysisTaskTrigChEff.h:45
 AliAnalysisTaskTrigChEff.h:46
 AliAnalysisTaskTrigChEff.h:47
 AliAnalysisTaskTrigChEff.h:48
 AliAnalysisTaskTrigChEff.h:49
 AliAnalysisTaskTrigChEff.h:50
 AliAnalysisTaskTrigChEff.h:51
 AliAnalysisTaskTrigChEff.h:52
 AliAnalysisTaskTrigChEff.h:53
 AliAnalysisTaskTrigChEff.h:54
 AliAnalysisTaskTrigChEff.h:55
 AliAnalysisTaskTrigChEff.h:56
 AliAnalysisTaskTrigChEff.h:57
 AliAnalysisTaskTrigChEff.h:58
 AliAnalysisTaskTrigChEff.h:59
 AliAnalysisTaskTrigChEff.h:60
 AliAnalysisTaskTrigChEff.h:61
 AliAnalysisTaskTrigChEff.h:62
 AliAnalysisTaskTrigChEff.h:63
 AliAnalysisTaskTrigChEff.h:64
 AliAnalysisTaskTrigChEff.h:65
 AliAnalysisTaskTrigChEff.h:66
 AliAnalysisTaskTrigChEff.h:67
 AliAnalysisTaskTrigChEff.h:68
 AliAnalysisTaskTrigChEff.h:69
 AliAnalysisTaskTrigChEff.h:70
 AliAnalysisTaskTrigChEff.h:71
 AliAnalysisTaskTrigChEff.h:72
 AliAnalysisTaskTrigChEff.h:73
 AliAnalysisTaskTrigChEff.h:74
 AliAnalysisTaskTrigChEff.h:75
 AliAnalysisTaskTrigChEff.h:76
 AliAnalysisTaskTrigChEff.h:77
 AliAnalysisTaskTrigChEff.h:78
 AliAnalysisTaskTrigChEff.h:79
 AliAnalysisTaskTrigChEff.h:80
 AliAnalysisTaskTrigChEff.h:81
 AliAnalysisTaskTrigChEff.h:82
 AliAnalysisTaskTrigChEff.h:83
 AliAnalysisTaskTrigChEff.h:84
 AliAnalysisTaskTrigChEff.h:85
 AliAnalysisTaskTrigChEff.h:86
 AliAnalysisTaskTrigChEff.h:87
 AliAnalysisTaskTrigChEff.h:88
 AliAnalysisTaskTrigChEff.h:89
 AliAnalysisTaskTrigChEff.h:90
 AliAnalysisTaskTrigChEff.h:91
 AliAnalysisTaskTrigChEff.h:92
 AliAnalysisTaskTrigChEff.h:93
 AliAnalysisTaskTrigChEff.h:94
 AliAnalysisTaskTrigChEff.h:95