#include "AliMUONHit.h"
#include "AliMpDEManager.h"
#include "AliLog.h"
#include <Riostream.h>
#include <TMath.h>
#include <TString.h>
using std::endl;
using std::cout;
using std::setw;
using std::setprecision;
ClassImp(AliMUONHit)
AliMUONHit::AliMUONHit()
: AliHit(),
fDetElemId(0),
fParticle(0),
fTheta(0),
fPhi(0),
fTlength(0),
fEloss(0),
fAge(0),
fPHfirst(0),
fPHlast(0),
fPTot(0),
fPx(0),
fPy(0),
fPz(0),
fXref(0),
fYref(0),
fZref(0)
{
}
AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits)
: AliHit(shunt, track),
fDetElemId(vol[0]),
fParticle(hits[0]),
fTheta(hits[4]),
fPhi(hits[5]),
fTlength(hits[6]),
fEloss(hits[7]),
fAge(hits[14]),
fPHfirst((Int_t)hits[8]),
fPHlast((Int_t)hits[9]),
fPTot(hits[10]),
fPx(hits[11]),
fPy(hits[12]),
fPz(hits[13]),
fXref(0),
fYref(0),
fZref(0)
{
fX = hits[1];
fY = hits[2];
fZ = hits[3];
}
AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t detElemId, Int_t idpart,
Float_t x, Float_t y, Float_t z, Float_t tof, Float_t momentum,
Float_t theta, Float_t phi, Float_t length, Float_t destep)
: AliHit(shunt, track),
fDetElemId(detElemId),
fParticle(idpart),
fTheta(theta),
fPhi(phi),
fTlength(length),
fEloss(destep),
fAge(tof),
fPHfirst(0),
fPHlast(0),
fPTot(momentum),
fPx(momentum * TMath::Sin(theta) * TMath::Cos(phi)),
fPy(momentum * TMath::Sin(theta) * TMath::Sin(phi)),
fPz(momentum * TMath::Cos(theta)),
fXref(0),
fYref(0),
fZref(0)
{
fX = x;
fY = y;
fZ = z;
}
AliMUONHit::AliMUONHit(Int_t shunt, Int_t track, Int_t detElemId, Int_t idpart,
Float_t x, Float_t y, Float_t z, Float_t tof, Float_t momentum,
Float_t theta, Float_t phi, Float_t length, Float_t destep,
Float_t xref,Float_t yref,Float_t zref)
: AliHit(shunt, track),
fDetElemId(detElemId),
fParticle(idpart),
fTheta(theta),
fPhi(phi),
fTlength(length),
fEloss(destep),
fAge(tof),
fPHfirst(0),
fPHlast(0),
fPTot(momentum),
fPx(momentum * TMath::Sin(theta) * TMath::Cos(phi)),
fPy(momentum * TMath::Sin(theta) * TMath::Sin(phi)),
fPz(momentum * TMath::Cos(theta)),
fXref(xref),
fYref(yref),
fZref(zref)
{
fX = x;
fY = y;
fZ = z;
}
AliMUONHit::~AliMUONHit()
{
}
Int_t AliMUONHit::Chamber() const
{
return AliMpDEManager::GetChamberId(fDetElemId) + 1;
}
const char*
AliMUONHit::GetName() const
{
return Form("%s-DE%04d",ClassName(),DetElemId());
}
void AliMUONHit::Print(Option_t* opt) const
{
TString sopt(opt);
sopt.ToUpper();
if ( sopt.Contains("FULL") ) {
cout <<"<AliMUONHit>: Geant track=" << setw(4) << Track() <<
", DetEle=" << setw(4) << DetElemId() <<
", (x,y,z)=(" << setw(7) << setprecision(5) << X() << "," << setw(7) << setprecision(5) << Y() << "," << setw(7) << setprecision(5) << Z() <<
" )cm, Delta E=" << setw(8) << setprecision(3) << Eloss() << " GeV" << endl;
}
else {
cout << "<AliMUONHit>: DetEle=" << setw(4) << DetElemId() <<
", (x,y,z)=(" << setw(7) << setprecision(5) << X() << "," << setw(7) << setprecision(5) << Y() << "," << setw(7) << setprecision(5) << Z() <<
" ) cm" <<endl;
}
}