SToGS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
ParisEvents.C
Go to the documentation of this file.
1 
2 
3 #include "ParisEvents.h"
4 #include "TClass.h"
5 
9 
10 PHit::PHit() : TObject(),
11  fE(0.0),
12  fID(kUnknown),
13  fX(0.0),
14  fY(0.0),
15  fZ(0.0),
16  fT(0.0),
17  fFlag(0),
18  fUID(-1)
19 {
20  PHit::Class()->IgnoreTObjectStreamer();
21  Clear("");
22 
23 // printf("Const \n");
24 }
25 
26 PHit::PHit(const PHit &phit) : TObject((TObject &)phit)
27 {
28  fE = phit.fE;
29  fID = phit.fID;
30  fX = phit.fX;
31  fY = phit.fY;
32  fZ = phit.fZ;
33  fT = phit.fT;
34  fFlag = phit.fFlag;
35  fUID = phit.fUID;
36 }
37 
38 
39 void PHit::Clear(Option_t * /*opt*/)
40 {
41  fE = 0;
42  fID = kUnknown;
43  fX = 0.0;
44  fY = 0.0;
45  fZ = 0.0;
46  fT = 0.0;
47  fFlag = 0;
48  fUID = -1;
49 }
50 
52 {
53 // printf("Des \n");
54 }
55 
57  fX(0.0),
58  fY(0.0),
59  fZ(0.0),
60  fTA(0.0),
61  fTL(0.0),
62  fLength(0.0),
63  fPrimaryID(0.0),
64  fSecondaryID(0.0),
65  fNbSteps(0.0)
66 {
67  POpticalHit::Class()->IgnoreTObjectStreamer();
68  Clear("");
69 
70  // printf("Const \n");
71 }
72 
73 POpticalHit::POpticalHit(const POpticalHit &phit) : TObject((TObject &)phit)
74 {
75  fX = phit.fX;
76  fY = phit.fY;
77  fZ = phit.fZ;
78  fTA = phit.fTA;
79  fTL = phit.fTL;
80  fLength = phit.fLength;
81 
82  fPrimaryID = phit.fPrimaryID;
84  fNbSteps = phit.fNbSteps;
85 }
86 
87 
88 void POpticalHit::Clear(Option_t * /*opt*/)
89 {
90  fX = 0.0;
91  fY = 0.0;
92  fZ = 0.0;
93  fTA = 0.0;
94  fTL = 0.0;
95  fLength = 0.0;
96 
97  fPrimaryID = -1;
98  fSecondaryID = -1;
99  fNbSteps = 0;
100 }
101 
103 {
104  // printf("Des \n");
105 }
106 
107 PEvent::PEvent() : TObject(),
108  fHits(0x0),
109  fH(0.0),
110  fK(0)
111 {
112  fHits = new TClonesArray("PHit",10000);
113 
114  PEvent::Class()->IgnoreTObjectStreamer();
115 }
116 
118 {
119  delete fHits;
120 }
121 
122 void PEvent::Clear(Option_t *opt)
123 {
124  fHits->Clear(opt);
125 
126  fK = 0;
127  fH = 0.0;
128 }
129 
131 {
132 // printf("entries IN %d \n",fHits->GetEntries());
133 
134  TClonesArray &ar = *fHits;
135  PHit *p = new( ar[fHits->GetEntries()] ) PHit();
136 
137 // printf("entries OU %d \n",fHits->GetEntries());
138 
139  return p;
140 }
141 
142 PHit *PEvent::GetHit(Int_t which)
143 {
144  TClonesArray &ar = *fHits;
145 
146  if ( which < fHits->GetEntries() )
147  return (PHit *)ar[which];
148  return 0x0;
149 }
150 
152  fHits(0x0)
153 {
154  fHits = new TClonesArray("POpticalHit",100000);
155 
156  POpticalEvent::Class()->IgnoreTObjectStreamer();
157 }
158 
160 {
161  delete fHits;
162 }
163 
164 void POpticalEvent::Clear(Option_t *opt)
165 {
166  fHits->Clear(opt);
167 }
168 
170 {
171  // printf("entries IN %d \n",fHits->GetEntries());
172 
173  TClonesArray &ar = *fHits;
174  POpticalHit *p = new( ar[fHits->GetEntries()] ) POpticalHit();
175 
176  // printf("entries OU %d \n",fHits->GetEntries());
177 
178  return p;
179 }
180 
182 {
183  TClonesArray &ar = *fHits;
184 
185  if ( which < fHits->GetEntries() )
186  return (POpticalHit *)ar[which];
187  return 0x0;
188 }
189 
190 #include <algorithm>
191 
192 // function to have hit sorted with increasing energy
193 bool CompE_ASCENDING(PHit *hit1, PHit *hit2)
194 {
195  if ( hit2->fE > hit1->fE )
196  return true;
197 
198  return false;
199 }
200 // function to have hit sorted with decreasing energy
201 bool CompE_DESCENDING(PHit *hit1, PHit *hit2)
202 {
203  if ( hit2->fE < hit1->fE )
204  return true;
205 
206  return false;
207 }
208 
209 void PEvent::CopyTo(std::vector <PHit *> &ordlist, Option_t *opt)
210 {
211  TString o = opt; TClonesArray &ar = *fHits;
212 
213  for( Int_t i = 0; i < ar.GetEntries(); i++ ) {
214  ordlist.push_back( (PHit *)ar[i] );
215  }
216  if ( o == "e>" ) {
217  std::sort( ordlist.begin(), ordlist.end(), CompE_ASCENDING );
218  }
219  if ( o == "e<" ) {
220  std::sort( ordlist.begin(), ordlist.end(), CompE_DESCENDING );
221  }
222 }
223 
224 
225 
226 
227 
228 
Double32_t fZ
Definition: ParisEvents.h:63
bool CompE_ASCENDING(PHit *hit1, PHit *hit2)
Definition: ParisEvents.C:193
PHit * GetHit(Int_t)
to get a Hit
Definition: ParisEvents.C:142
Int_t fSecondaryID
Definition: ParisEvents.h:152
Int_t fPrimaryID
Definition: ParisEvents.h:151
Int_t fUID
Definition: ParisEvents.h:66
Double32_t fX
Definition: ParisEvents.h:143
Double32_t fY
Definition: ParisEvents.h:144
Double32_t fX
Definition: ParisEvents.h:61
Double32_t fLength
Definition: ParisEvents.h:149
virtual ~PHit()
Definition: ParisEvents.C:51
virtual ~POpticalHit()
Definition: ParisEvents.C:102
Double32_t fTA
Definition: ParisEvents.h:146
void CopyTo(std::vector< PHit * > &ordlist, Option_t *opt="")
helper function
Definition: ParisEvents.C:209
Double32_t fT
Definition: ParisEvents.h:64
void Clear(Option_t *opt)
clear the collection of hits, set H, K to 0
Definition: ParisEvents.C:122
Double32_t fE
Definition: ParisEvents.h:59
void Clear(Option_t *opt)
Definition: ParisEvents.C:164
bool CompE_DESCENDING(PHit *hit1, PHit *hit2)
Definition: ParisEvents.C:201
virtual ~PEvent()
Definition: ParisEvents.C:117
ClassImp(PHit)
Definition: ParisEvents.C:6
Double32_t fY
Definition: ParisEvents.h:62
POpticalHit * AddHit()
add a hit to the current event
Definition: ParisEvents.C:169
POpticalHit * GetHit(Int_t)
to get a Hit
Definition: ParisEvents.C:181
Double32_t fTL
Definition: ParisEvents.h:147
PHit * AddHit()
add a hit to the current event
Definition: ParisEvents.C:130
Int_t fID
Definition: ParisEvents.h:60
virtual ~POpticalEvent()
Definition: ParisEvents.C:159
Int_t fFlag
Definition: ParisEvents.h:65
Double32_t fZ
Definition: ParisEvents.h:145
Int_t fNbSteps
Definition: ParisEvents.h:153