* provided "as is" without express or implied warranty. *
**************************************************************************/
+/* $Id$ */
+
+////////////////////////////////////////////////////////////////////////////
+// //
+// TRD MC track //
+// Used for efficiency estimates and matching of reconstructed tracks //
+// to MC particles //
+// //
+////////////////////////////////////////////////////////////////////////////
+
#include "AliTRDmcTrack.h"
#include "AliTRDgeometry.h"
//_____________________________________________________________________________
AliTRDmcTrack::AliTRDmcTrack()
+ :TObject()
+ ,fLab(-1)
+ ,fSeedLab(-1)
+ ,fPrimary(kFALSE)
+ ,fMass(0)
+ ,fCharge(0)
+ ,fPDG(0)
+ ,fN(0)
{
-
//
// Default constructor
//
- fLab = -1;
- fPrimary = kFALSE;
- fMass = 0;
- fCharge = 0;
- fN = 0;
-
- for(Int_t i=0; i<200; i++) fIndex[i]=-1;
-
- for(Int_t i=0; i<6; i++) {
- for(Int_t j=0; j<3; j++) {
- Pin[i][j]=0.;
- Pout[i][j] = 0.;
+ for (Int_t ltb = 0; ltb < kMAXTB; ltb++) {
+ for (Int_t plane = 0; plane < 6; plane++) {
+ fIndex[ltb][plane][0] = -1;
+ fIndex[ltb][plane][1] = -1;
+ }
+ }
+
+ for (Int_t i = 0; i < 6; i++) {
+ for (Int_t j = 0; j < 3; j++) {
+ fPin[i][j] = 0.0;
+ fPout[i][j] = 0.0;
+ fXYZin[i][j] = 0.0;
+ fXYZout[i][j] = 0.0;
}
}
}
//_____________________________________________________________________________
-AliTRDmcTrack::AliTRDmcTrack(Int_t label, Bool_t primary, Float_t mass
- ,Int_t charge, Int_t pdg)
+AliTRDmcTrack::AliTRDmcTrack(Int_t label, Int_t seedLabel, Bool_t primary
+ , Float_t mass, Int_t charge, Int_t pdg)
+ :TObject()
+ ,fLab(label)
+ ,fSeedLab(seedLabel)
+ ,fPrimary(primary)
+ ,fMass(mass)
+ ,fCharge(charge)
+ ,fPDG(pdg)
+ ,fN(0)
{
-
//
// Main constructor
//
-
- fLab = label;
- fPrimary = primary;
- fMass = mass;
- fCharge = charge;
- fPDG = pdg;
- fN = 0;
- for(Int_t i=0; i<200; i++) fIndex[i]=-1;
+ for (Int_t ltb = 0; ltb < kMAXTB; ltb++) {
+ for (Int_t plane = 0; plane < 6; plane++) {
+ fIndex[ltb][plane][0] = -1;
+ fIndex[ltb][plane][1] = -1;
+ }
+ }
- for(Int_t i=0; i<6; i++) {
- for(Int_t j=0; j<3; j++) {
- Pin[i][j]=0.;
- Pout[i][j] = 0.;
+ for (Int_t i = 0; i < 6; i++) {
+ for (Int_t j = 0; j < 3; j++) {
+ fPin[i][j] = 0.0;
+ fPout[i][j] = 0.0;
+ fXYZin[i][j] = 0.0;
+ fXYZout[i][j] = 0.0;
}
}
}
//_____________________________________________________________________________
-void AliTRDmcTrack::GetPxPyPz(Double_t& px, Double_t& py, Double_t& pz,
- Int_t opt = 0) const
+void AliTRDmcTrack::GetPxPyPzXYZ(Double_t& px, Double_t& py, Double_t& pz
+ , Double_t& x, Double_t& y, Double_t& z
+ , Int_t opt) const
{
//
- // Returns momentum components at the entrance (opt >= 0), or
- // exit (opt < 0) of TRD.
+ // Returns track momentum components and coordinates at the entrance
+ // (opt >= 0), or exit (opt < 0) of TRD.
//
- Int_t i;
+ Int_t i = 0;
- if(opt >= 0) {
- for(i = 0; i < AliTRDgeometry::Nplan(); i++) {
- if( Pin[i][0] * Pin[i][0]
- + Pin[i][1] * Pin[i][1]
- + Pin[i][2] * Pin[i][2] > 0.0005) break;
+ if (opt >= 0) {
+
+ for (i = 0; i < AliTRDgeometry::Nplan(); i++) {
+ if ((fPin[i][0]*fPin[i][0]
+ + fPin[i][1]*fPin[i][1]
+ + fPin[i][2]*fPin[i][2]) > 0.0005) {
+ break;
+ }
}
- px = Pin[0][0]; py = Pin[0][1]; pz = Pin[0][2];
+
+ px = fPin[i][0];
+ py = fPin[i][1];
+ pz = fPin[i][2];
+ x = fXYZin[i][0];
+ y = fXYZin[i][1];
+ z = fXYZin[i][2];
+
}
else {
- for(i = AliTRDgeometry::Nplan() - 1; i >= 0; i--) {
- if( Pout[i][0] * Pout[i][0]
- + Pout[i][1] * Pout[i][1]
- + Pout[i][2] * Pout[i][2] > 0.0005) break;
+
+ for (i = AliTRDgeometry::Nplan() - 1; i >= 0; i--) {
+ if ((fPout[i][0]*fPout[i][0]
+ + fPout[i][1]*fPout[i][1]
+ + fPout[i][2]*fPout[i][2]) > 0.0005) {
+ break;
+ }
}
- px = Pout[i][0]; py = Pout[i][1]; pz = Pout[i][2];
+
+ px = fPout[i][0];
+ py = fPout[i][1];
+ pz = fPout[i][2];
+ x = fXYZout[i][0];
+ y = fXYZout[i][1];
+ z = fXYZout[i][2];
+
}
return;
-
}
//_____________________________________________________________________________
-void AliTRDmcTrack::GetPlanePxPyPz(Double_t& px, Double_t& py, Double_t& pz,
- Int_t plane, Int_t opt = 0) const
+void AliTRDmcTrack::GetPlanePxPyPz(Double_t& px, Double_t& py, Double_t& pz
+ , Int_t plane, Int_t opt) const
{
//
// Returns momentum components at the entrance (opt >= 0), or
// exit (opt < 0) of TRD plane <plane>.
//
- if(opt >= 0) {
- px = Pin[plane][0]; py = Pin[plane][1]; pz = Pin[plane][2];
+ if (opt >= 0) {
+ px = fPin[plane][0];
+ py = fPin[plane][1];
+ pz = fPin[plane][2];
}
else {
- px = Pout[plane][0]; py = Pout[plane][1]; pz = Pout[plane][2];
+ px = fPout[plane][0];
+ py = fPout[plane][1];
+ pz = fPout[plane][2];
}
return;