Files
uLib/src/Root/muCastorMCTrack.h
2020-06-29 14:44:26 +02:00

89 lines
3.2 KiB
C++

#ifndef muCastor_MCTRACK_H
#define muCastor_MCTRACK_H
//########################################
// muCastorMCTrack class
// Created at the University of Brescia, Italy
// Date: December 2011
// Autors: Germano Bonomi germano.bonomi@ing.unibs.it
// Martin Subieta martin.subieta@ing.unibs.it
//########################################
#include <iostream>
#include "vector"
#include "TObject.h"
#include "TParticle.h"
#include "Detectors/MuonScatter.h"
class TClonesArray;
class muCastorMCTrack : public TObject
{
public:
/** Default constructor **/
muCastorMCTrack();
/** Constructor from TParticle **/
muCastorMCTrack(TParticle* particle);
/** Destructor **/
virtual ~muCastorMCTrack();
void Reset();
/** Accessors **/
Int_t GetFirstDaughter() const { return fDaughter[0];}
Int_t GetMother() const { return fMother[0];}
/** Modifiers **/
virtual void AddPoint(TLorentzVector pos, TLorentzVector mom);
virtual void SetFirstDaughter(Int_t trkid) { fDaughter[0] = trkid; }
virtual void SetLastDaughter(Int_t trkid) { fDaughter[1] = trkid; }
inline void Dump() {
std::cout << "muCastorMCTrack\n"
<< "PDG code: " << fPdgCode << "\n"
<< "Momentum: " << fPx << ", " << fPy << ", " << fPz << "\n"
<< "Position: " << fVx << ", " << fVy << ", " << fVz << "\n"
<< "Npoints: " << fNpoints << "\n";
return;
}
public:
/* Private variables - copying private variables of TParticle */
Int_t fPdgCode; // PDG code of the particle
Int_t fMother[2]; // Indices of the mother particles
Int_t fDaughter[2]; // Indices of the daughter particles
Double_t fPx; // x component of momentum
Double_t fPy; // y component of momentum
Double_t fPz; // z component of momentum
Double_t fE; // Energy
Double_t fVx; // x of production vertex
Double_t fVy; // y of production vertex
Double_t fVz; // z of production vertex
Double_t fVt; // t of production vertex
Int_t fPointsSize; // capacity of points array
Int_t fNpoints; // number of stored points
Double_t *fPntPosX; //[fNpoints] array of points (x) belonging to this track
Double_t *fPntPosY; //[fNpoints] array of points (y) belonging to this track
Double_t *fPntPosZ; //[fNpoints] array of points (z) belonging to this track
Double_t *fPntT; //[fNpoints] array of points (t) belonging to this track
Double_t *fPntMomX; //[fNpoints] array of points (px) belonging to this track
Double_t *fPntMomY; //[fNpoints] array of points (py) belonging to this track
Double_t *fPntMomZ; //[fNpoints] array of points (pz) belonging to this track
Double_t *fPntE; //[fNpoints] array of points (E) belonging to this track
ClassDef(muCastorMCTrack,1);
};
uLib::MuonScatter &operator << (uLib::MuonScatter &mu, const muCastorMCTrack &bsmu);
#endif //muCastor_MCTRACK_H