FairRoot/PandaRoot
PndDskCerenkov.cxx
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // ----- PndDskCerenkov source file -----
3 // ----- Created 21/03/08 by P. Koch -----
4 // ----------------------------------------------------------------------------
5 
6 #include "TMath.h"
7 #include <iostream>
8 using std::cout;
9 using std::endl;
10 
11 #include "PndDskCerenkov.h"
12 
13 
14 
15 // ----- Default constructor ----------------------------------------------
17  : FairMCPoint(),
18  fEnergy(0.),
19  fWavelength(0.),
20  fPWay(0.),
21  fLastPos(TVector3()),
22  fMotherTrackID(-1),
23  fMotherPdgCode(-1),
24  fMotherPdgName(TString()),
25  fDetNumber(-1),
26  fDetType(-1),
27  fDetTime(0.),
28  fDetMomentum(TVector3()),
29  fNofReflections(0),
30  fPrimaryHitAngle(0.),
31  fPrimaryAngleToCerenkov(0.),
32  f5RefPosition(TVector3()),
33  fTotalRefAngle(0.)
34 {
35 }
36 // ----------------------------------------------------------------------------
37 
38 
39 
40 // ----- Standard constructor ---------------------------------------------
41 PndDskCerenkov::PndDskCerenkov(Int_t trackID, Int_t detectorID,
42  TVector3 position, TVector3 momentum, Double_t time,
43  Double_t energy, Double_t wavelength,
44  Int_t motherTrackID, Int_t motherPdgCode, TString motherPdgName)
45  : FairMCPoint(trackID, detectorID, position, momentum, time, 0., 0.),
46  fEnergy(energy),
47  fWavelength(wavelength),
48  fPWay(0.),
49  fLastPos(position),
50  fMotherTrackID(motherTrackID),
51  fMotherPdgCode(motherPdgCode),
52  fMotherPdgName(motherPdgName),
53  fDetNumber(-1),
54  fDetType(-1),
55  fDetTime(0.),
56  fDetMomentum(TVector3()),
57  fNofReflections(0),
58  fPrimaryHitAngle(0.),
59  fPrimaryAngleToCerenkov(0.),
60  f5RefPosition(TVector3()),
61  fTotalRefAngle(0.)
62 {
63 // cout << "Added Cerenkov with wl = " << fWavelength << endl;
64 }
65 // ----------------------------------------------------------------------------
66 
68  FairMCPoint(cerenkov.fTrackID, cerenkov.fDetectorID, TVector3(cerenkov.fX, cerenkov.fY, cerenkov.fZ), TVector3(cerenkov.fPx, cerenkov.fPy, cerenkov.fPz), cerenkov.fTime, cerenkov.fLength, cerenkov.fELoss, cerenkov.fEventId),
69  fEnergy(cerenkov.fEnergy),
70  fWavelength(cerenkov.fWavelength),
71  fPWay(cerenkov.fPWay),
72  fLastPos(cerenkov.fLastPos),
73  fMotherTrackID(cerenkov.fMotherTrackID),
74  fMotherPdgCode(cerenkov.fMotherPdgCode),
75  fMotherPdgName(cerenkov.fMotherPdgName),
76  fDetNumber(cerenkov.fDetNumber),
77  fDetType(cerenkov.fDetType),
78  fDetTime(cerenkov.fDetTime),
79  fDetMomentum(cerenkov.fDetMomentum),
80  fNofReflections(cerenkov.fNofReflections),
81  fPrimaryHitAngle(cerenkov.fPrimaryHitAngle),
82  fPrimaryAngleToCerenkov(cerenkov.fPrimaryAngleToCerenkov),
83  f5RefPosition(cerenkov.f5RefPosition),
84  fTotalRefAngle(cerenkov.fTotalRefAngle)
85 {
86 }
87 
88 // ----- Destructor -------------------------------------------------------
90 {
91 }
92 // ----------------------------------------------------------------------------
93 
94 
95 
96 // ----- Public method Print ----------------------------------------------
97 void
98 PndDskCerenkov::Print(const Option_t* opt) const {
99  (void)opt; // to remove "unused" warnings
100  cout << "-I- PndDskCerenkov: track" << fTrackID
101  << " created in detector " << fDetectorID << endl;
102  cout << " at Position (" << fX << ", " << fY << ", " << fZ
103  << ") cm" << endl;
104  cout << " with Momentum (" << fPx << ", " << fPy << ", " << fPz
105  << ") eV" << endl;
106  cout << " at Time " << fTime << " ns" << endl;
107 }
108 // ----------------------------------------------------------------------------
109 
110 
111 
112 // ----- Public method SetFinalValues -------------------------------------
113 void
114 PndDskCerenkov::SetFinalValues(Int_t detNumber, Short_t detType, Double_t detTime,
115  TVector3 detMomentum, Double_t length,
116  Double_t primaryHitAngle, Double_t primaryAngleToCerenkov)
117 {
118  fDetNumber = detNumber;
119  fDetType = detType;
120  fDetTime = detTime;
121  fDetMomentum = detMomentum;
122  fLength = length;
123  fPrimaryHitAngle = primaryHitAngle;
124  fPrimaryAngleToCerenkov = primaryAngleToCerenkov;
125 }
126 // ----------------------------------------------------------------------------
127 
128 
129 
130 // ----- Public method AddPWay -------------------------------------
131 void
133 {
134 // printf("..... %11.6lf %11.6lf %11.6lf - %11.6lf %11.6lf %11.6lf -> %11.6lf\n",
135 // fLastPos.X(), fLastPos.Y(), fLastPos.Z(),
136 // pos.X(), pos.Y(), pos.Z(),
137 // TMath::Sqrt( (fLastPos.X()-pos.X())*(fLastPos.X()-pos.X())
138 // + (fLastPos.Y()-pos.Y())*(fLastPos.Y()-pos.Y()) )
139 // );
140  fPWay += TMath::Sqrt( (fLastPos.X()-pos.X())*(fLastPos.X()-pos.X())
141  + (fLastPos.Y()-pos.Y())*(fLastPos.Y()-pos.Y()) );
142  fLastPos = pos;
143 }
144 
145 
146 
TVector3 pos
void SetFinalValues(Int_t detNumber, Short_t detType, Double_t detTime, TVector3 detMomentum, Double_t length, Double_t primaryHitAngle, Double_t primaryAngleToCerenkov)
TVector3 fDetMomentum
Momentum when detected [eV].
static T Sqrt(const T &x)
Definition: PndCAMath.h:37
virtual void Print(const Option_t *opt) const
Double_t fX
Definition: PndCaloDraw.cxx:34
Int_t fDetNumber
Detector number that finally registered the photon.
Double_t fZ
Definition: PndCaloDraw.cxx:34
Double_t fPWay
Projected Way [cm].
Double_t fPrimaryHitAngle
Angle to the z-Axis when first registered.
Short_t fDetType
Detector type.
void AddPWay(TVector3 pos)
Double_t
virtual ~PndDskCerenkov()
TVector3 fLastPos
Double_t fY
Definition: PndCaloDraw.cxx:34
Double_t fPrimaryAngleToCerenkov
Angle between momentum of eachs first appearance.
ClassImp(PndAnaContFact)
Double_t fDetTime
Global time when detected [ns].
Double_t energy
Definition: plot_dirc.C:15