3 #include "P0DDataClasses.hxx" 4 #include "BasicUtils.hxx" 8 const Float_t kFloatUnassigned = -999.;
9 const UInt_t kUnassigned = 0xDEADBEEF;
10 const short kShortUnassigned = 0xFF;
13 AnaP0DHit::AnaP0DHit(){
17 Time = kFloatUnassigned;
20 Charge = kFloatUnassigned;
28 GeomID = p0dHit.GeomID;
32 Charge = p0dHit.Charge;
37 AnaP0DCluster::AnaP0DCluster(){
40 ValidDimensions = kShortUnassigned;
41 UniqueID = kUnassigned;
42 EDeposit = kFloatUnassigned;
44 anaUtils::VectorToArray (TLorentzVector(0,0,0,0), Position );
45 anaUtils::VectorToArray (TLorentzVector(0,0,0,0), PosVariance);
47 for (UInt_t i=0;i<9;i++) Moments[i]=0;
59 AlgorithmName = p0dCluster.AlgorithmName;
60 ValidDimensions = p0dCluster.ValidDimensions;
61 UniqueID = p0dCluster.UniqueID;
62 EDeposit = p0dCluster.EDeposit;
64 anaUtils::CopyArray (p0dCluster.
Moments, Moments, 9);
66 anaUtils::CopyArray (p0dCluster.Position, Position, 4);
67 anaUtils::CopyArray (p0dCluster.PosVariance, PosVariance, 4);
69 TrueParticle = p0dCluster.TrueParticle;
71 anaUtils::CreateArray(Hits, p0dCluster.nHits);
72 anaUtils::CopyArray(p0dCluster.Hits, Hits, p0dCluster.nHits);
73 nHits = p0dCluster.nHits;
77 AnaP0DCluster::~AnaP0DCluster(){
81 if(Hits != NULL)
delete [] Hits;
89 #if VERSION_HAS_P0D_AVERAGED_TIME 97 ValidDimensions = kShortUnassigned;
98 SideDeposit = kFloatUnassigned;
99 EndDeposit = kFloatUnassigned;
100 EDeposit = kFloatUnassigned;
102 realPIDNames .clear();
103 realPIDValues .clear();
104 integerPIDNames .clear();
105 integerPIDValues .clear();
117 #if VERSION_HAS_P0D_AVERAGED_TIME 122 Type = p0dParticle.Type;
123 AlgorithmName = p0dParticle.AlgorithmName;
125 ValidDimensions = p0dParticle.ValidDimensions;
126 SideDeposit = p0dParticle.SideDeposit;
127 EndDeposit = p0dParticle.EndDeposit;
128 EDeposit = p0dParticle.EDeposit;
129 realPIDNames = p0dParticle.realPIDNames;
130 realPIDValues = p0dParticle.realPIDValues;
131 integerPIDNames = p0dParticle.integerPIDNames;
132 integerPIDValues = p0dParticle.integerPIDValues;
133 PID = p0dParticle.PID;
134 PID_weight = p0dParticle.PID_weight;
136 anaUtils::CreateArray(Clusters, p0dParticle.nClusters);
137 anaUtils::CopyArray(p0dParticle.Clusters, Clusters, p0dParticle.nClusters);
139 nClusters = p0dParticle.nClusters;
143 AnaP0DParticle::~AnaP0DParticle(){
147 if(Clusters != NULL)
delete [] Clusters;
155 std::cout <<
"-------- AnaP0DParticle --------- " << std::endl;
159 std::cout <<
"Type: " << Type << std::endl;
160 std::cout <<
"#Clusters: " << nClusters << std::endl;
167 ValidDimensions = kShortUnassigned;
169 NHits = kShortUnassigned;
170 Fiducial = kFloatUnassigned;
173 anaUtils::VectorToArray (TLorentzVector(0,0,0,0), PosVariance);
183 AlgorithmName = p0dVertex.AlgorithmName;
184 ValidDimensions = p0dVertex.ValidDimensions;
185 NHits = p0dVertex.NHits;
187 Fiducial = p0dVertex.Fiducial;
189 anaUtils::CopyArray (p0dVertex.PosVariance, PosVariance, 4);
191 anaUtils::CreateArray(Clusters, p0dVertex.nClusters);
192 anaUtils::CopyArray(p0dVertex.Clusters, Clusters, p0dVertex.nClusters);
194 nClusters = p0dVertex.nClusters;
198 AnaP0DVertex::~AnaP0DVertex(){
202 if(Clusters != NULL)
delete [] Clusters;
207 AnaP0DBunch::AnaP0DBunch():
AnaBunch(){
212 AlternateBunches.clear();
215 P0DWaterStatus =
false;
222 anaUtils::CreateArray(Clusters, p0dBunch.nClusters);
223 anaUtils::CopyArray(p0dBunch.Clusters, Clusters, p0dBunch.nClusters);
225 P0DWaterStatus = p0dBunch.P0DWaterStatus;
226 nClusters = p0dBunch.nClusters;
228 for (std::vector<AnaP0DBunch*>::const_iterator it=p0dBunch.AlternateBunches.begin();it!=p0dBunch.AlternateBunches.end();it++)
229 AlternateBunches.push_back((*it)->Clone());
231 FullName=p0dBunch.FullName;
235 AnaP0DBunch::~AnaP0DBunch(){
239 if(Clusters != NULL)
delete [] Clusters;
242 for (std::vector<AnaP0DBunch*>::iterator it=AlternateBunches.begin();it!=AlternateBunches.end();it++)
245 AlternateBunches.clear();
254 AlternateEvents.clear();
258 P0DWaterStatus =
false;
265 anaUtils::CreateArray(Clusters, p0dEvent.nClusters);
266 anaUtils::CopyArray(p0dEvent.Clusters, Clusters, p0dEvent.nClusters);
268 P0DWaterStatus = p0dEvent.P0DWaterStatus;
269 nClusters = p0dEvent.nClusters;
272 for (std::vector<AnaP0DEvent*>::const_iterator it=p0dEvent.AlternateEvents.begin();it!=p0dEvent.AlternateEvents.end();it++)
273 AlternateEvents.push_back((*it)->Clone());
275 FullName=p0dEvent.FullName;
282 anaUtils::CreateArray(Clusters, p0dBunch.nClusters);
283 anaUtils::CopyArray(p0dBunch.Clusters, Clusters, p0dBunch.nClusters);
285 P0DWaterStatus = p0dBunch.P0DWaterStatus;
286 nClusters = p0dBunch.nClusters;
288 FullName=p0dBunch.FullName;
290 for (std::vector<AnaP0DBunch*>::const_iterator it=p0dBunch.AlternateBunches.begin();it!=p0dBunch.AlternateBunches.end();it++){
292 AlternateEvents.push_back(alt);
298 AnaP0DEvent::~AnaP0DEvent(){
302 if(Clusters != NULL)
delete [] Clusters;
306 for (std::vector<AnaP0DEvent*>::iterator it=AlternateEvents.begin();it!=AlternateEvents.end();it++)
309 AlternateEvents.clear();
316 for(
int i = 0; i < n; ++i){
323 void anaUtils::CreateArray(
AnaP0DCluster** &tgtArr,
int nObj){
327 for(
int i = 0; i < nObj; ++i){
336 for(
int i = 0; i < n; ++i){
343 void anaUtils::CreateArray(
AnaP0DHit** &tgtArr,
int nObj){
347 for(
int i = 0; i < nObj; ++i){
353 EventBoxP0D2::EventBoxP0D2():
EventBoxB(){
356 for (UInt_t i=0;i<NMAXVERTEXGROUPS;i++){
357 nVerticesInGroup[i]=0;
358 VerticesInGroup[i]=NULL;
363 EventBoxP0D2::~EventBoxP0D2(){
365 for (UInt_t i=0;i<NMAXVERTEXGROUPS;i++){
366 if (VerticesInGroup[i])
367 delete [] VerticesInGroup[i];
368 VerticesInGroup[i] = NULL;
Float_t AvgTime
Average Time: using results from time vs distance fit.
Extension to AnaParticleB containing momentum and charge info, to be used by aggregation.
void Print() const
Dump the object to screen.
Float_t Moments[9]
Moments of the Cluster.
Int_t NHits
The number of hits in the particle.
virtual void Print() const
Dump the object to screen.
Representation of a global vertex.
Representation of a P0D segment of a global track.