123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470 |
- /**
- * \class MpdFemtoModelHiddenInfo
- * \brief The hidden information for model calculations
- *
- * Stores information needed for the weight generation - the true
- * simulated momenta, freeze-out coordinates from model and particle PID
- *
- * \author Grigory Nigmatkulov (NRNU MEPhI)
- * \date May 18, 2019
- * \email nigmatkulov@gmail.com
- */
- #ifndef MpdFemtoModelHiddenInfo_h
- #define MpdFemtoModelHiddenInfo_h
- // C++ headers
- #include <limits>
- // MpdFemtoMaker headers
- #include "MpdFemtoHiddenInfo.h"
- #include "MpdFemtoTypes.h"
- // ROOT headers
- #include "TVector3.h"
- #include "TLorentzVector.h"
- #include "TDatabasePDG.h"
- #include "TParticlePDG.h"
- #include "TParticle.h"
- //_________________
- class MpdFemtoModelHiddenInfo : public MpdFemtoHiddenInfo {
- public:
- /// Default constructor
- MpdFemtoModelHiddenInfo();
- /// Copy constructor
- MpdFemtoModelHiddenInfo(const MpdFemtoModelHiddenInfo &aInfo);
- /// Assignment operator
- MpdFemtoModelHiddenInfo& operator=(const MpdFemtoModelHiddenInfo& aInfo);
- /// Destructor
- virtual ~MpdFemtoModelHiddenInfo();
- /// Return true momentum of the particle (px,py,pz)
- TVector3 trueMomentum() const;
- /// Return true momentum of the particle (px,py,pz)
- TVector3 TrueMomentum() const {
- return trueMomentum();
- }
- /// Return momentum of the mother track (px,py,pz)
- TVector3 motherMomentum() const;
- /// Return momentum of the mother track (px,py,pz)
- TVector3 MotherMomentum() const {
- return motherMomentum();
- }
- /// Return emission point (x,y,z,t)
- TLorentzVector emissionPoint() const;
- /// Return emission point (x,y,z,t)
- TLorentzVector EmissionPoint() const {
- return emissionPoint();
- }
- /// PDG code
- int pdgId() const {
- return mPDGPid;
- }
- /// PDG code
- int PdgId() const {
- return pdgId();
- }
- /// PDG code
- int pdgPid() const {
- return pdgId();
- }
- /// PDG code
- int PdgPid() const {
- return pdgId();
- }
- /// PDG code of the mother particle
- int motherPdgCode() const {
- return mMotherPdg;
- }
- /// PDG code of the mother particle
- int MotherPdgCode() const {
- return motherPdgCode();
- }
- /// Particle mass
- float mass() const {
- return TDatabasePDG::Instance()->GetParticle(pdgPid())->Mass();
- }
- /// Particle mass
- float Mass() const {
- return mass();
- }
- /// Particle charge
- float charge() const {
- return TDatabasePDG::Instance()->GetParticle(pdgPid())->Charge();
- }
- /// Particle charge
- float Charge() const {
- return charge();
- }
- /// Return mother's mass
- float motherMass() const {
- return TDatabasePDG::Instance()->GetParticle(motherPdgCode())->Mass();
- }
- /// Return mother's mass
- float MotherMass() const {
- return motherMass();
- }
- /// Return mother's charge
- float motherCharge() const {
- return TDatabasePDG::Instance()->GetParticle(motherPdgCode())->Charge();
- }
- /// Return mother's charge
- float MotherCharge() const {
- return motherCharge();
- }
- /// Return true momentum of the positive track (px,py,pz)
- TVector3 trueMomentumPos() const;
- /// Return true momentum of the positive track (px,py,pz)
- TVector3 TrueMomentumPos() const {
- return trueMomentumPos();
- }
- /// Return emission point of the positive track (x,y,z,t)
- TLorentzVector emissionPointPos() const;
- /// Return emission point of the positive track (x,y,z,t)
- TLorentzVector EmissionPointPos() const {
- return emissionPointPos();
- }
- /// Return PDG code of the positive track
- int pdgPidPos() const {
- return mPDGPidPos;
- }
- /// Return PDG code of the positive track
- int PdgPidPos() const {
- return pdgPidPos();
- }
- /// Return mass of the positive track
- float massPos() const {
- return TDatabasePDG::Instance()->GetParticle(pdgPidPos())->Mass();
- }
- /// Return mass of the positive track
- float MassPos() const {
- return massPos();
- }
- /// Return true momentum of the negative track (px,py,pz)
- TVector3 trueMomentumNeg() const;
- /// Return true momentum of the negative track (px,py,pz)
- TVector3 TrueMomentumNeg() const {
- return trueMomentumNeg();
- }
- /// Return emission point of the negative track (x,y,z,t)
- TLorentzVector emissionPointNeg() const;
- /// Return emission point of the negative track (x,y,z,t)
- TLorentzVector EmissionPointNeg() const {
- return emissionPointNeg();
- };
- /// Return PDG code of the negative track
- int pdgPidNeg() const {
- return mPDGPidNeg;
- }
- /// Return PDG code of the negative track
- int PdgPidNeg() const {
- return pdgPidNeg();
- }
- /// Return mass of the positive track
- float massNeg() const {
- return TDatabasePDG::Instance()->GetParticle(pdgPidNeg())->Mass();
- }
- /// Return mass of the positive track
- float MassNeg() const {
- return massNeg();
- }
- /// Return origin:
- /// \param -1 unknown
- /// \param 0 physical primary
- /// \param 1 secondary from weak decay
- /// \param 2 secondary from material
- int origin() const {
- return (int) mOrigin;
- }
- /// Return origin:
- /// \param -1 unknown
- /// \param 0 physical primary
- /// \param 1 secondary from weak decay
- /// \param 2 secondary from material
- int Origin() const {
- return origin();
- }
- /// Set true momentum of the particle
- void setTrueMomentum(TVector3 *aMom);
- /// Set true momentum of the particle
- void SetTrueMomentum(TVector3 *aMom) {
- setTrueMomentum(aMom);
- }
- /// Set true momentum of the particle
- void setTrueMomentum(const TVector3& aMom);
- /// Set true momentum of the particle
- void SetTrueMomentum(const TVector3& aMom) {
- SetTrueMomentum(aMom);
- }
- /// Set true momentum of the particle
- void setTrueMomentum(const double& aPx, const double& aPy, const double& aPz);
- /// Set true momentum of the particle
- void SetTrueMomentum(const double& aPx, const double& aPy, const double& aPz) {
- setTrueMomentum(aPx, aPy, aPz);
- }
- /// Set momentum of the mother track
- void setMotherMomentum(TVector3 *aMom);
- /// Set momentum of the mother track
- void SetMotherMomentum(TVector3 *aMom) {
- setMotherMomentum(aMom);
- }
- /// Set momentum of the mother track
- void setMotherMomentum(const TVector3& aMom);
- /// Set momentum of the mother track
- void SetMotherMomentum(const TVector3& aMom) {
- setMotherMomentum(aMom);
- }
- /// Set momentum of the mother track
- void setMotherMomentum(const double& aPx, const double& aPy, const double& aPz);
- /// Set momentum of the mother track
- void SetMotherMomentum(const double& aPx, const double& aPy, const double& aPz) {
- setMotherMomentum(aPx, aPy, aPz);
- }
- /// Set emission point position (x,y,z,t)
- void setEmissionPoint(TLorentzVector *aPos);
- /// Set emission point position (x,y,z,t)
- void SetEmissionPoint(TLorentzVector *aPos) {
- setEmissionPoint(aPos);
- }
- /// Set emission point position (x,y,z,t)
- void setEmissionPoint(const TLorentzVector& aPos);
- /// Set emission point position (x,y,z,t)
- void SetEmissionPoint(const TLorentzVector& aPos) {
- setEmissionPoint(aPos);
- }
- /// Set emission point position (x,y,z,t)
- void setEmissionPoint(const double& aRx, const double& aRy, const double& aRz, const double& aT);
- /// Set emission point position (x,y,z,t)
- void SetEmissionPoint(const double& aRx, const double& aRy, const double& aRz, const double& aT) {
- setEmissionPoint(aRx, aRy, aRz, aT);
- }
- /// Set PDG code
- void setPdgPid(const int& aPid) {
- mPDGPid = aPid;
- }
- /// Set PDG code
- void setPDGPid(const int& aPid) {
- setPDGPid(aPid);
- }
- /// Set PDG code
- void SetPdgPid(const int& aPid) {
- setPdgPid(aPid);
- }
- /// Set PDG code of the mother particle
- void setMotherPdgCode(const int& motherPdg) {
- mMotherPdg = motherPdg;
- }
- /// Set PDG code of the mother particle
- void SetMotherPdgCode(const int& motherPdg) {
- setMotherPdgCode(motherPdg);
- }
- /// Set true momentum of the positive track (px,py,pz)
- void setTrueMomentumPos(TVector3 *aMom);
- /// Set true momentum of the positive track (px,py,pz)
- void SetTrueMomentumPos(TVector3 *aMom) {
- setTrueMomentumPos(aMom);
- }
- /// Set true momentum of the positive track (px,py,pz)
- void setTrueMomentumPos(const TVector3& aMom);
- /// Set true momentum of the positive track (px,py,pz)
- void SetTrueMomentumPos(const TVector3& aMom) {
- setTrueMomentumPos(aMom);
- }
- /// Set true momentum of the positive track (px,py,pz)
- void setTrueMomentumPos(const double& aPx, const double& aPy, const double& aPz);
- /// Set true momentum of the positive track (px,py,pz)
- void SetTrueMomentumPos(const double& aPx, const double& aPy, const double& aPz) {
- setTrueMomentumPos(aPx, aPy, aPz);
- }
- /// Set emission point position of the positive track (x,y,z,t)
- void setEmissionPointPos(TLorentzVector *aPos);
- /// Set emission point position of the positive track (x,y,z,t)
- void SetEmissionPointPos(TLorentzVector *aPos) {
- setEmissionPointPos(aPos);
- }
- /// Set emission point position of the positive track (x,y,z,t)
- void setEmissionPointPos(const TLorentzVector& aPos);
- /// Set emission point position of the positive track (x,y,z,t)
- void SetEmissionPointPos(const TLorentzVector& aPos) {
- setEmissionPointPos(aPos);
- }
- /// Set emission point position of the positive track (x,y,z,t)
- void setEmissionPointPos(const double& aRx, const double& aRy, const double& aRz, const double& aT);
- /// Set emission point position of the positive track (x,y,z,t)
- void SetEmissionPointPos(const double& aRx, const double& aRy, const double& aRz, const double& aT) {
- setEmissionPointPos(aRx, aRy, aRz, aT);
- }
- /// Set PDG code of the positive track
- void setPdgPidPos(const int& aPid) {
- mPDGPidPos = aPid;
- }
- /// Set PDG code of the positive track
- void setPDGPidPos(const int& aPid) {
- setPdgPidPos(aPid);
- }
- /// Set PDG code of the positive track
- void SetPdgPidPos(const int& aPid) {
- setPdgPidPos(aPid);
- }
- /// Set true momentum of the negative track (px,py,pz)
- void setTrueMomentumNeg(TVector3 *aMom);
- /// Set true momentum of the negative track (px,py,pz)
- void SetTrueMomentumNeg(TVector3 *aMom) {
- setTrueMomentumNeg(aMom);
- }
- /// Set true momentum of the negative track (px,py,pz)
- void setTrueMomentumNeg(const TVector3& aMom);
- /// Set true momentum of the negative track (px,py,pz)
- void SetTrueMomentumNeg(const TVector3& aMom) {
- setTrueMomentumNeg(aMom);
- }
- /// Set true momentum of the negative track (px,py,pz)
- void setTrueMomentumNeg(const double& aPx, const double& aPy, const double& aPz);
- /// Set true momentum of the negative track (px,py,pz)
- void SetTrueMomentumNeg(const double& aPx, const double& aPy, const double& aPz) {
- setTrueMomentumNeg(aPx, aPy, aPz);
- }
- /// Set emission point position of the negative track (x,y,z,t)
- void setEmissionPointNeg(TLorentzVector *aNeg);
- /// Set emission point position of the negative track (x,y,z,t)
- void SetEmissionPointNeg(TLorentzVector *aNeg) {
- setEmissionPointNeg(aNeg);
- }
- /// Set emission point position of the negative track (x,y,z,t)
- void setEmissionPointNeg(const TLorentzVector& aNeg);
- /// Set emission point position of the negative track (x,y,z,t)
- void SetEmissionPointNeg(const TLorentzVector& aNeg) {
- setEmissionPointNeg(aNeg);
- }
- /// Set emission point position of the negative track (x,y,z,t)
- void setEmissionPointNeg(const double& aRx, const double& aRy, const double& aRz, const double& aT);
- /// Set emission point position of the negative track (x,y,z,t)
- void SetEmissionPointNeg(const double& aRx, const double& aRy, const double& aRz, const double& aT) {
- setEmissionPointNeg(aRx, aRy, aRz, aT);
- }
- /// Set PDG code of the negative track
- void setPdgPidNeg(const int& aPid) {
- mPDGPidNeg = aPid;
- }
- /// Set PDG code of the negative track
- void setPDGPidNeg(const int& aPid) {
- setPdgPidNeg(aPid);
- }
- /// Set PDG code of the negative track
- void SetPdgPidNeg(const int& aPid) {
- setPdgPidNeg(aPid);
- }
- /// Set origin:
- /// \param 0 physical primary
- /// \param 1 secondary from weak decay
- /// \param 2 secondary from material
- void setOrigin(const int& origin) {
- mOrigin = ((origin > 2 || origin < 0) ? -1 : (char) origin);
- }
- /// Set origin:
- /// \param 0 physical primary
- /// \param 1 secondary from weak decay
- /// \param 2 secondary from material
- void SetOrigin(const int& origin) {
- setOrigin(origin);
- }
- // !!! MANDATORY !!!
- /// Copy the hidden info from MpdFemtoTrack to MpdFemtoParticle
- virtual MpdFemtoHiddenInfo* clone() const {
- return getParticleHiddenInfo();
- }
- /// Copy the hidden info from MpdFemtoTrack to MpdFemtoParticle
- virtual MpdFemtoHiddenInfo* Clone() const {
- return clone();
- }
- protected:
- /// Return copy of the hidden info
- virtual MpdFemtoHiddenInfo* getParticleHiddenInfo() const;
- /// Return copy of the hidden info
- virtual MpdFemtoHiddenInfo* GetParticleHiddenInfo() const {
- return getParticleHiddenInfo();
- }
- /// X component of true (simulated) momentum
- float *mTrueMomentumX;
- /// Y component of true (simulated) momentum
- float *mTrueMomentumY;
- /// Z component of true (simulated) momentum
- float *mTrueMomentumZ;
- /// X component of momentum of mother particle
- float *mMotherMomentumX;
- /// Y component of momentum of mother particle
- float *mMotherMomentumY;
- /// Z component of momentum of mother particle
- float *mMotherMomentumZ;
- /// Emission point coordinate X
- float *mEmissionPointX;
- /// Emission point coordinate Y
- float *mEmissionPointY;
- /// Emission point coordinate Z
- float *mEmissionPointZ;
- /// Emission point coordinate T
- float *mEmissionPointT;
- /// True PID of the particle
- int mPDGPid;
- /// PDG code of particle's mother
- int mMotherPdg;
- /// X component of the daughter particle momentum
- float *mTrueMomentumPosX;
- /// Y component of the daughter particle momentum
- float *mTrueMomentumPosY;
- /// Z component of the daughter particle momentum
- float *mTrueMomentumPosZ;
- /// X coordinate of the emission point coordinates of positive daughter
- float *mEmissionPointPosX;
- /// Y coordinate of the emission point coordinates of positive daughter
- float *mEmissionPointPosY;
- /// Z coordinate of the emission point coordinates of positive daughter
- float *mEmissionPointPosZ;
- /// T coordinate of the emission point coordinates of positive daughter
- float *mEmissionPointPosT;
- /// True PID of positive daughter
- int mPDGPidPos;
- /// X component of the daughter particle momentum
- float *mTrueMomentumNegX;
- /// Y component of the daughter particle momentum
- float *mTrueMomentumNegY;
- /// Z component of the daughter particle momentum
- float *mTrueMomentumNegZ;
- /// X coordinate of the emission point coordinates of negative daughter
- float *mEmissionPointNegX;
- /// Y coordinate of the emission point coordinates of negative daughter
- float *mEmissionPointNegY;
- /// Z coordinate of the emission point coordinates of negative daughter
- float *mEmissionPointNegZ;
- /// T coordinate of the emission point coordinates of negative daughter
- float *mEmissionPointNegT;
- /// True PID of negative daughter
- int mPDGPidNeg;
- /// Origin of particles:
- /// \param -1 unknown
- /// \param 0 physical primary
- /// \param 1 secondary from weak decay
- /// \param 2 secondary from material
- char mOrigin;
- ClassDef(MpdFemtoModelHiddenInfo, 1)
- };
- #endif // MpdFemtoModelHiddenInfo_h
|