ROOT logo
#ifndef ALIMUONINFOSTORERD_H
#define ALIMUONINFOSTORERD_H

/* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */ 

//***********************************************************
// Class AliMuonInfoStoreRD
// class used to extract and store reco info of muon track
// Author: X-M. Zhang, zhang@clermont.in2p3.fr
//                     zhangxm@iopp.ccnu.edu.cn
//***********************************************************

#include <TObject.h>
#include <TVector3.h>
#include <TString.h>
#include <TMath.h>

class AliAODTrack;
class AliESDMuonTrack;

class AliMuonInfoStoreRD : public TObject {
 public:

  AliMuonInfoStoreRD();
  AliMuonInfoStoreRD(AliAODTrack     *trk, UInt_t selMask);
  AliMuonInfoStoreRD(AliESDMuonTrack *trk, UInt_t selMask);
  AliMuonInfoStoreRD(const AliMuonInfoStoreRD &src);
  AliMuonInfoStoreRD& operator=(const AliMuonInfoStoreRD &src);
  virtual ~AliMuonInfoStoreRD();

  TVector3 MomentumAtVtx() const { return fMomentumAtVtx; }
  TVector3 MomentumAtDCA() const { return fMomentumAtDCA; }
  TVector3 MomentumUncor() const { return fMomentumUncor; }

  void XYZAtDCA(Double_t dca[3]) const { for (Int_t i=3; i--;) dca[i]=fDCA[i]; }
  Double_t DCA() const  { return TMath::Sqrt(fDCA[0]*fDCA[0]+fDCA[1]*fDCA[1]); }

  Short_t  Charge()       const { return fCharge;           }
  Int_t    MatchTrigger() const { return fMatchTrigger;     }
  Double_t Chi2Tracker()  const { return fChi2FitMomentum;  }
  Double_t Chi2Trigger()  const { return fChi2MatchTrigger; }
  Double_t RabsEnd()      const { return fRabsEnd;          }
  UInt_t   SelMask()      const { return fSelMask;          }
  Bool_t   IsSelected(const UInt_t filter) { return ((fSelMask & filter) == filter); }
  static const char* StdBranchName()       { return fgkStdBranchName.Data();       }

 private:

  void FillMuonInfo(AliAODTrack *trk);
  void FillMuonInfo(AliESDMuonTrack *trk);

  void SetMomentumAtVtx(Double_t p[3]) { fMomentumAtVtx.SetXYZ(p[0],p[1],p[2]); }
  void SetMomentumAtDCA(Double_t p[3]) { fMomentumAtDCA.SetXYZ(p[0],p[1],p[2]); }
  void SetMomentumUncor(Double_t p[3]) { fMomentumUncor.SetXYZ(p[0],p[1],p[2]); }
  void SetDCA(Double_t dca[3])         { for (Int_t i=3; i--;) fDCA[i]=dca[i];  }
  void SetCharge(Short_t charge)           { fCharge           = charge;  }
  void SetMatchTrigger(Int_t trigger)      { fMatchTrigger     = trigger; }
  void SetChi2FitMomentum(Double_t chi2)   { fChi2FitMomentum  = chi2;    }
  void SetChi2MatchTrigger(Double_t chi2)  { fChi2MatchTrigger = chi2;    }
  void SetRabsEnd(Double_t rAbsEnd)        { fRabsEnd          = rAbsEnd; }

  static const TString fgkStdBranchName;  // Standard branch name

  TVector3 fMomentumAtVtx;  // momentum corrected w vtx
  TVector3 fMomentumAtDCA;  // momentum at DCA in vtx plane
  TVector3 fMomentumUncor;  // momentum at first station

  Double_t fDCA[3];            // distance of closet approach
  Short_t  fCharge;            // track charge
  Int_t    fMatchTrigger;      // type of match trigger
  Double_t fChi2FitMomentum;   // chi2/NDF of momentum fit
  Double_t fChi2MatchTrigger;  // chi2 of trigger matching
  Double_t fRabsEnd;  // position at the end of front absorber
  UInt_t   fSelMask;  // mask of single muon selection

  ClassDef(AliMuonInfoStoreRD, 7);
};

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