ROOT logo
#ifndef ALIMCTRUTHTRACKMAKER_H
#define ALIMCTRUTHTRACKMAKER_H

class TClonesArray;
class AliESDEvent;
class AliESDMuonTrack;
class AliMCEvent;
class AliAODTrack;
class AliVParticle;
class AliStack;

#include "TString.h"
#include "AliAnalysisTaskSE.h"

class AliMCTruthTrackMaker : public AliAnalysisTaskSE {
 public:
  AliMCTruthTrackMaker();
  AliMCTruthTrackMaker(const char *name);
  virtual ~AliMCTruthTrackMaker();

  void UserCreateOutputObjects();
  void UserExec(Option_t *option);

  void SetChargedMC(Bool_t c = kTRUE)                { fChargedMC        = c    ; }
  void SetEtaMax(Double_t e)                         { fEtaMax           = e    ; }
  void SetFillMuMothers(Bool_t c = kTRUE)            { fFillMuMothers    = c    ; }
  void SetTriggerMatch(Bool_t b)                     { fTriggerMatch     = b    ; }
  void SetTracksOutName(const char *name)            { fTracksOutName    = name ; }

 protected:
  Int_t              GetNumberOfTracks() const;
  AliVParticle      *GetTrack(Int_t i);
  void               AddTrack(AliVParticle *track, Int_t nacc);
  Bool_t             IsGoodMUONtrack(AliESDMuonTrack &track);
  Bool_t             IsGoodMUONtrack(AliAODTrack &track);
  Int_t              GetFirstPrimaryMother(Int_t muonlabel);
  
  TString            fTracksOutName;        // name of output track array
  Bool_t             fChargedMC;            // true = only charged particles
  Bool_t             fFillMuMothers;        // true = fill primary mother of reconstructed muon tracksmuon cuts
  Bool_t             fTriggerMatch;         // require trigger match as muon cut?
  Double_t           fEtaMax;               // maximum eta to accept tracks
  Bool_t             fInit;                 //!true = task initialized
  Bool_t             fEsdMode;              //!switch for ESD/AOD mode
  TClonesArray      *fTracksIn;             //!track array in (AOD only)
  TClonesArray      *fTracksOut;            //!track array out
  AliESDEvent       *fESD;                  //! ESD object
  AliMCEvent        *fMC;                   //! MC object
  AliStack          *fStack;                //! MC stack
  
 private:
  AliMCTruthTrackMaker(const AliMCTruthTrackMaker&);            // not implemented
  AliMCTruthTrackMaker &operator=(const AliMCTruthTrackMaker&); // not implemented

  ClassDef(AliMCTruthTrackMaker, 1); // Task to select tracks in MC events
};
#endif
 AliMCTruthTrackMaker.h:1
 AliMCTruthTrackMaker.h:2
 AliMCTruthTrackMaker.h:3
 AliMCTruthTrackMaker.h:4
 AliMCTruthTrackMaker.h:5
 AliMCTruthTrackMaker.h:6
 AliMCTruthTrackMaker.h:7
 AliMCTruthTrackMaker.h:8
 AliMCTruthTrackMaker.h:9
 AliMCTruthTrackMaker.h:10
 AliMCTruthTrackMaker.h:11
 AliMCTruthTrackMaker.h:12
 AliMCTruthTrackMaker.h:13
 AliMCTruthTrackMaker.h:14
 AliMCTruthTrackMaker.h:15
 AliMCTruthTrackMaker.h:16
 AliMCTruthTrackMaker.h:17
 AliMCTruthTrackMaker.h:18
 AliMCTruthTrackMaker.h:19
 AliMCTruthTrackMaker.h:20
 AliMCTruthTrackMaker.h:21
 AliMCTruthTrackMaker.h:22
 AliMCTruthTrackMaker.h:23
 AliMCTruthTrackMaker.h:24
 AliMCTruthTrackMaker.h:25
 AliMCTruthTrackMaker.h:26
 AliMCTruthTrackMaker.h:27
 AliMCTruthTrackMaker.h:28
 AliMCTruthTrackMaker.h:29
 AliMCTruthTrackMaker.h:30
 AliMCTruthTrackMaker.h:31
 AliMCTruthTrackMaker.h:32
 AliMCTruthTrackMaker.h:33
 AliMCTruthTrackMaker.h:34
 AliMCTruthTrackMaker.h:35
 AliMCTruthTrackMaker.h:36
 AliMCTruthTrackMaker.h:37
 AliMCTruthTrackMaker.h:38
 AliMCTruthTrackMaker.h:39
 AliMCTruthTrackMaker.h:40
 AliMCTruthTrackMaker.h:41
 AliMCTruthTrackMaker.h:42
 AliMCTruthTrackMaker.h:43
 AliMCTruthTrackMaker.h:44
 AliMCTruthTrackMaker.h:45
 AliMCTruthTrackMaker.h:46
 AliMCTruthTrackMaker.h:47
 AliMCTruthTrackMaker.h:48
 AliMCTruthTrackMaker.h:49
 AliMCTruthTrackMaker.h:50
 AliMCTruthTrackMaker.h:51
 AliMCTruthTrackMaker.h:52
 AliMCTruthTrackMaker.h:53
 AliMCTruthTrackMaker.h:54
 AliMCTruthTrackMaker.h:55
 AliMCTruthTrackMaker.h:56
 AliMCTruthTrackMaker.h:57