ROOT logo
#ifndef ALIANALYSISMUONUTILITY_H
#define ALIANALYSISMUONUTILITY_H

/* $Id: AliAnalysisMuonUtility.h 47782 2011-02-24 18:37:31Z martinez $ */ 

//
// Utilities for muon analysis
//
// Author: Diego Stocco
//

#include "TObject.h"
#include "TString.h"

class TLorentzVector;
class AliInputEventHandler;
class AliVEvent;
class AliMCEvent;
class AliVParticle;
class AliVVertex;
class AliCFGridSparse;

class AliAnalysisMuonUtility : public TObject {
 public:
  
  // Utility methods for CF container
  static Bool_t SetSparseRange(AliCFGridSparse* gridSparse,
                               Int_t ivar, TString labelName,
                               Double_t varMin, Double_t varMax,
                               TString option = "");
  
  // Transparently handle ESD/AOD
  static Bool_t IsAODEvent ( const AliVEvent* event );
  static TString GetFiredTriggerClasses ( const AliVEvent* event );
  static Int_t GetNTracks ( const AliVEvent* event );
  static AliVParticle* GetTrack ( Int_t itrack, const AliVEvent* event );
  static UInt_t GetL0TriggerInputs ( const AliVEvent* event );
  static UInt_t GetL1TriggerInputs ( const AliVEvent* event );
  static UInt_t GetL2TriggerInputs ( const AliVEvent* event );
  
  static Bool_t IsAODTrack ( const AliVParticle* track );
  static Bool_t IsMuonTrack ( const AliVParticle* track );
  static Bool_t IsMuonGhost ( const AliVParticle* track );
  static Double_t GetRabs ( const AliVParticle* track );
  static Double_t GetThetaAbsDeg ( const AliVParticle* track );
  static Int_t GetMatchTrigger ( const AliVParticle* track );
  static Bool_t MatchApt ( const AliVParticle* track ) { return GetMatchTrigger(track) >= 1; }
  static Bool_t MatchLpt ( const AliVParticle* track ) { return GetMatchTrigger(track) >= 2; }
  static Bool_t MatchHpt ( const AliVParticle* track ) { return GetMatchTrigger(track) >= 3; }
  static Double_t GetChi2perNDFtracker ( const AliVParticle* track );
  static Double_t GetChi2MatchTrigger ( const AliVParticle* track );
  static Double_t GetXatVertex ( const AliVParticle* track );
  static Double_t GetYatVertex ( const AliVParticle* track );
  static Double_t GetZatVertex ( const AliVParticle* track );
  static Double_t GetXatDCA ( const AliVParticle* track );
  static Double_t GetYatDCA ( const AliVParticle* track );
  static Double_t GetZatDCA ( const AliVParticle* track ) { return GetZatVertex(track); }
  static Bool_t IsTrkChamberHit( Int_t chamber, const AliVParticle* track );
  static UInt_t GetMUONTrigHitsMapTrk ( const AliVParticle* track );
  static UInt_t GetMUONTrigHitsMapTrg ( const AliVParticle* track );
  static Int_t GetMuonTrigDevSign ( const AliVParticle* track );
  static Int_t GetLoCircuit ( const AliVParticle* track );
  static TLorentzVector GetTrackPair ( const AliVParticle* track1, const AliVParticle* track2 );

  
  // Transparently handle MC
  static Double_t GetMCVertexZ ( const AliVEvent* event, const AliMCEvent* mcEvent );
  
  static Bool_t IsAODMCTrack ( const AliVParticle* mcParticle );
  static Bool_t IsMCTrack ( const AliVParticle* mcParticle );
  static Int_t GetMotherIndex ( const AliVParticle* mcParticle );
  static Int_t GetDaughterIndex ( const AliVParticle* mcParticle, Int_t idaughter );
  static Bool_t IsPrimary ( const AliVParticle* mcParticle, const AliMCEvent* mcEvent );
  static UInt_t GetMCProcess ( const AliVParticle* mcParticle );
  static UInt_t GetStatusCode ( const AliVParticle* mcParticle );
  
  static Bool_t EAGetTZEROFlags(const AliVEvent* event, Bool_t& backgroundFlag, Bool_t& pileupFlag, Bool_t& satelliteFlag);

  // A useful constant
  static Double_t MuonMass2();
  
  // Transparently handle vertex
  static AliVVertex* GetVertexSPD ( const AliVEvent* event );
  
  // Utilities for ESD/AOD
  static Int_t GetPassNumber ( const AliInputEventHandler* eventHandler );
  static Int_t GetPassNumber ( const char* str );
  static TString GetPassName ( const AliInputEventHandler* eventHandler );
  static TString GetPassName ( const char* str );
  
  // Utilities for MC
  static TString GetTrackHistory ( const AliVParticle* track, const AliMCEvent* mcEvent, Bool_t verbose = kFALSE );
  
  ClassDef(AliAnalysisMuonUtility, 0);
};

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