ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

/////////////////////////////////////////////////////////////
//
// 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 "AliAODTrack.h"
#include "AliESDMuonTrack.h"
#include "AliMuonInfoStoreRD.h"

class TObject;

ClassImp(AliMuonInfoStoreRD)

const TString AliMuonInfoStoreRD::fgkStdBranchName("MuonRD");

//-----------------------------------------------------------------------------
AliMuonInfoStoreRD::AliMuonInfoStoreRD() :
TObject(),
fMomentumAtVtx(),
fMomentumAtDCA(),
fMomentumUncor(),
fCharge(0),
fMatchTrigger(-1),
fChi2FitMomentum(0.),
fChi2MatchTrigger(0.),
fRabsEnd(0.),
fSelMask(0)
{
  //
  // default constructor
  //
  for (Int_t i=3; i--;) fDCA[i]=0.;
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreRD::AliMuonInfoStoreRD(AliAODTrack *trk, UInt_t selMask) :
TObject(),
fMomentumAtVtx(),
fMomentumAtDCA(),
fMomentumUncor(),
fCharge(0),
fMatchTrigger(-1),
fChi2FitMomentum(0.),
fChi2MatchTrigger(0.),
fRabsEnd(0.),
fSelMask(selMask)
{
  //
  // AOD-base constructor
  //
  for (Int_t i=3; i--;) fDCA[i]=0.;
  this->FillMuonInfo(trk);
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreRD::AliMuonInfoStoreRD(AliESDMuonTrack *trk, UInt_t selMask) :
TObject(),
fMomentumAtVtx(),
fMomentumAtDCA(),
fMomentumUncor(),
fCharge(0),
fMatchTrigger(-1),
fChi2FitMomentum(0.),
fChi2MatchTrigger(0.),
fRabsEnd(0.),
fSelMask(selMask)
{
  //
  // ESD-base constructor
  //
  for (Int_t i=3; i--;) fDCA[i]=0.;
  this->FillMuonInfo(trk);
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreRD::AliMuonInfoStoreRD(const AliMuonInfoStoreRD &src) :
TObject(src),
fMomentumAtVtx(src.fMomentumAtVtx),
fMomentumAtDCA(src.fMomentumAtDCA),
fMomentumUncor(src.fMomentumUncor),
fCharge(src.fCharge),
fMatchTrigger(src.fMatchTrigger),
fChi2FitMomentum(src.fChi2FitMomentum),
fChi2MatchTrigger(src.fChi2MatchTrigger),
fRabsEnd(src.fRabsEnd),
fSelMask(src.fSelMask)
{
  //
  // copy constructor
  //
  for (Int_t i=3; i--;) fDCA[i]=src.fDCA[i];
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreRD& AliMuonInfoStoreRD::operator=(const AliMuonInfoStoreRD &src)
{
  //
  // assignment constructor
  //
  if(&src==this) return *this;

  fMomentumAtVtx    = src.fMomentumAtVtx;
  fMomentumAtDCA    = src.fMomentumAtDCA;
  fMomentumUncor    = src.fMomentumUncor;
  fCharge           = src.fCharge;
  fMatchTrigger     = src.fMatchTrigger;
  fChi2FitMomentum  = src.fChi2FitMomentum;
  fChi2MatchTrigger = src.fChi2MatchTrigger;
  fRabsEnd          = src.fRabsEnd;
  fSelMask          = src.fSelMask;

  for (Int_t i=3; i--;) fDCA[i]=src.fDCA[i];

  return *this;
}

//-----------------------------------------------------------------------------
AliMuonInfoStoreRD::~AliMuonInfoStoreRD()
{
  //
  // destructor
  //
}

//-----------------------------------------------------------------------------
void AliMuonInfoStoreRD::FillMuonInfo(AliAODTrack *trk)
{
  // extract reco info of muon track from AOD

  Double_t arr[3];
  trk->PxPyPz(arr);      this->SetMomentumAtVtx(arr);
  trk->PxPyPzAtDCA(arr); this->SetMomentumAtDCA(arr);
  trk->XYZAtDCA(arr);    this->SetDCA(arr);
  this->SetCharge(trk->Charge());
  this->SetMatchTrigger(trk->GetMatchTrigger());
  this->SetChi2FitMomentum(trk->Chi2perNDF());
  this->SetChi2MatchTrigger(trk->GetChi2MatchTrigger());
  this->SetRabsEnd(trk->GetRAtAbsorberEnd());
  return;
}


//-----------------------------------------------------------------------------
void AliMuonInfoStoreRD::FillMuonInfo(AliESDMuonTrack *trk)
{
  // extract reco info of muon track from ESD

  Double_t arr[3];
  arr[0]=trk->Px();                     arr[1]=trk->Py();                  arr[2]=trk->Pz();            this->SetMomentumAtVtx(arr);
  arr[0]=trk->PxAtDCA();                arr[1]=trk->PyAtDCA();             arr[2]=trk->PzAtDCA();       this->SetMomentumAtDCA(arr);
  arr[0]=trk->PxUncorrected();          arr[1]=trk->PyUncorrected();       arr[2]=trk->PzUncorrected(); this->SetMomentumUncor(arr);
  arr[0]=trk->GetNonBendingCoorAtDCA(); arr[1]=trk->GetBendingCoorAtDCA(); arr[2]=trk->GetZ();          this->SetDCA(arr);
  this->SetCharge(trk->Charge());
  this->SetMatchTrigger(trk->GetMatchTrigger());
  this->SetChi2FitMomentum(trk->GetChi2()/(2.*trk->GetNHit()-5.));
  this->SetChi2MatchTrigger(trk->GetChi2MatchTrigger());
  this->SetRabsEnd(trk->GetRAtAbsorberEnd());
  return;
}
 AliMuonInfoStoreRD.cxx:1
 AliMuonInfoStoreRD.cxx:2
 AliMuonInfoStoreRD.cxx:3
 AliMuonInfoStoreRD.cxx:4
 AliMuonInfoStoreRD.cxx:5
 AliMuonInfoStoreRD.cxx:6
 AliMuonInfoStoreRD.cxx:7
 AliMuonInfoStoreRD.cxx:8
 AliMuonInfoStoreRD.cxx:9
 AliMuonInfoStoreRD.cxx:10
 AliMuonInfoStoreRD.cxx:11
 AliMuonInfoStoreRD.cxx:12
 AliMuonInfoStoreRD.cxx:13
 AliMuonInfoStoreRD.cxx:14
 AliMuonInfoStoreRD.cxx:15
 AliMuonInfoStoreRD.cxx:16
 AliMuonInfoStoreRD.cxx:17
 AliMuonInfoStoreRD.cxx:18
 AliMuonInfoStoreRD.cxx:19
 AliMuonInfoStoreRD.cxx:20
 AliMuonInfoStoreRD.cxx:21
 AliMuonInfoStoreRD.cxx:22
 AliMuonInfoStoreRD.cxx:23
 AliMuonInfoStoreRD.cxx:24
 AliMuonInfoStoreRD.cxx:25
 AliMuonInfoStoreRD.cxx:26
 AliMuonInfoStoreRD.cxx:27
 AliMuonInfoStoreRD.cxx:28
 AliMuonInfoStoreRD.cxx:29
 AliMuonInfoStoreRD.cxx:30
 AliMuonInfoStoreRD.cxx:31
 AliMuonInfoStoreRD.cxx:32
 AliMuonInfoStoreRD.cxx:33
 AliMuonInfoStoreRD.cxx:34
 AliMuonInfoStoreRD.cxx:35
 AliMuonInfoStoreRD.cxx:36
 AliMuonInfoStoreRD.cxx:37
 AliMuonInfoStoreRD.cxx:38
 AliMuonInfoStoreRD.cxx:39
 AliMuonInfoStoreRD.cxx:40
 AliMuonInfoStoreRD.cxx:41
 AliMuonInfoStoreRD.cxx:42
 AliMuonInfoStoreRD.cxx:43
 AliMuonInfoStoreRD.cxx:44
 AliMuonInfoStoreRD.cxx:45
 AliMuonInfoStoreRD.cxx:46
 AliMuonInfoStoreRD.cxx:47
 AliMuonInfoStoreRD.cxx:48
 AliMuonInfoStoreRD.cxx:49
 AliMuonInfoStoreRD.cxx:50
 AliMuonInfoStoreRD.cxx:51
 AliMuonInfoStoreRD.cxx:52
 AliMuonInfoStoreRD.cxx:53
 AliMuonInfoStoreRD.cxx:54
 AliMuonInfoStoreRD.cxx:55
 AliMuonInfoStoreRD.cxx:56
 AliMuonInfoStoreRD.cxx:57
 AliMuonInfoStoreRD.cxx:58
 AliMuonInfoStoreRD.cxx:59
 AliMuonInfoStoreRD.cxx:60
 AliMuonInfoStoreRD.cxx:61
 AliMuonInfoStoreRD.cxx:62
 AliMuonInfoStoreRD.cxx:63
 AliMuonInfoStoreRD.cxx:64
 AliMuonInfoStoreRD.cxx:65
 AliMuonInfoStoreRD.cxx:66
 AliMuonInfoStoreRD.cxx:67
 AliMuonInfoStoreRD.cxx:68
 AliMuonInfoStoreRD.cxx:69
 AliMuonInfoStoreRD.cxx:70
 AliMuonInfoStoreRD.cxx:71
 AliMuonInfoStoreRD.cxx:72
 AliMuonInfoStoreRD.cxx:73
 AliMuonInfoStoreRD.cxx:74
 AliMuonInfoStoreRD.cxx:75
 AliMuonInfoStoreRD.cxx:76
 AliMuonInfoStoreRD.cxx:77
 AliMuonInfoStoreRD.cxx:78
 AliMuonInfoStoreRD.cxx:79
 AliMuonInfoStoreRD.cxx:80
 AliMuonInfoStoreRD.cxx:81
 AliMuonInfoStoreRD.cxx:82
 AliMuonInfoStoreRD.cxx:83
 AliMuonInfoStoreRD.cxx:84
 AliMuonInfoStoreRD.cxx:85
 AliMuonInfoStoreRD.cxx:86
 AliMuonInfoStoreRD.cxx:87
 AliMuonInfoStoreRD.cxx:88
 AliMuonInfoStoreRD.cxx:89
 AliMuonInfoStoreRD.cxx:90
 AliMuonInfoStoreRD.cxx:91
 AliMuonInfoStoreRD.cxx:92
 AliMuonInfoStoreRD.cxx:93
 AliMuonInfoStoreRD.cxx:94
 AliMuonInfoStoreRD.cxx:95
 AliMuonInfoStoreRD.cxx:96
 AliMuonInfoStoreRD.cxx:97
 AliMuonInfoStoreRD.cxx:98
 AliMuonInfoStoreRD.cxx:99
 AliMuonInfoStoreRD.cxx:100
 AliMuonInfoStoreRD.cxx:101
 AliMuonInfoStoreRD.cxx:102
 AliMuonInfoStoreRD.cxx:103
 AliMuonInfoStoreRD.cxx:104
 AliMuonInfoStoreRD.cxx:105
 AliMuonInfoStoreRD.cxx:106
 AliMuonInfoStoreRD.cxx:107
 AliMuonInfoStoreRD.cxx:108
 AliMuonInfoStoreRD.cxx:109
 AliMuonInfoStoreRD.cxx:110
 AliMuonInfoStoreRD.cxx:111
 AliMuonInfoStoreRD.cxx:112
 AliMuonInfoStoreRD.cxx:113
 AliMuonInfoStoreRD.cxx:114
 AliMuonInfoStoreRD.cxx:115
 AliMuonInfoStoreRD.cxx:116
 AliMuonInfoStoreRD.cxx:117
 AliMuonInfoStoreRD.cxx:118
 AliMuonInfoStoreRD.cxx:119
 AliMuonInfoStoreRD.cxx:120
 AliMuonInfoStoreRD.cxx:121
 AliMuonInfoStoreRD.cxx:122
 AliMuonInfoStoreRD.cxx:123
 AliMuonInfoStoreRD.cxx:124
 AliMuonInfoStoreRD.cxx:125
 AliMuonInfoStoreRD.cxx:126
 AliMuonInfoStoreRD.cxx:127
 AliMuonInfoStoreRD.cxx:128
 AliMuonInfoStoreRD.cxx:129
 AliMuonInfoStoreRD.cxx:130
 AliMuonInfoStoreRD.cxx:131
 AliMuonInfoStoreRD.cxx:132
 AliMuonInfoStoreRD.cxx:133
 AliMuonInfoStoreRD.cxx:134
 AliMuonInfoStoreRD.cxx:135
 AliMuonInfoStoreRD.cxx:136
 AliMuonInfoStoreRD.cxx:137
 AliMuonInfoStoreRD.cxx:138
 AliMuonInfoStoreRD.cxx:139
 AliMuonInfoStoreRD.cxx:140
 AliMuonInfoStoreRD.cxx:141
 AliMuonInfoStoreRD.cxx:142
 AliMuonInfoStoreRD.cxx:143
 AliMuonInfoStoreRD.cxx:144
 AliMuonInfoStoreRD.cxx:145
 AliMuonInfoStoreRD.cxx:146
 AliMuonInfoStoreRD.cxx:147
 AliMuonInfoStoreRD.cxx:148
 AliMuonInfoStoreRD.cxx:149
 AliMuonInfoStoreRD.cxx:150
 AliMuonInfoStoreRD.cxx:151
 AliMuonInfoStoreRD.cxx:152
 AliMuonInfoStoreRD.cxx:153
 AliMuonInfoStoreRD.cxx:154
 AliMuonInfoStoreRD.cxx:155
 AliMuonInfoStoreRD.cxx:156
 AliMuonInfoStoreRD.cxx:157
 AliMuonInfoStoreRD.cxx:158
 AliMuonInfoStoreRD.cxx:159
 AliMuonInfoStoreRD.cxx:160
 AliMuonInfoStoreRD.cxx:161
 AliMuonInfoStoreRD.cxx:162
 AliMuonInfoStoreRD.cxx:163
 AliMuonInfoStoreRD.cxx:164
 AliMuonInfoStoreRD.cxx:165
 AliMuonInfoStoreRD.cxx:166
 AliMuonInfoStoreRD.cxx:167
 AliMuonInfoStoreRD.cxx:168
 AliMuonInfoStoreRD.cxx:169
 AliMuonInfoStoreRD.cxx:170
 AliMuonInfoStoreRD.cxx:171
 AliMuonInfoStoreRD.cxx:172
 AliMuonInfoStoreRD.cxx:173
 AliMuonInfoStoreRD.cxx:174
 AliMuonInfoStoreRD.cxx:175
 AliMuonInfoStoreRD.cxx:176
 AliMuonInfoStoreRD.cxx:177
 AliMuonInfoStoreRD.cxx:178
 AliMuonInfoStoreRD.cxx:179