FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PndTrkLegendreCluster Class Reference

#include <PndTrkLegendreCluster.h>

Inheritance diagram for PndTrkLegendreCluster:
PndTrkCluster

Public Member Functions

 PndTrkLegendreCluster ()
 
virtual ~PndTrkLegendreCluster ()
 
 PndTrkLegendreCluster (const PndTrkLegendreCluster &cluster)
 
 PndTrkLegendreCluster (const PndTrkCluster &cluster)
 
PndTrkLegendreClusteroperator= (const PndTrkLegendreCluster &cluster)
 
void SetR (double r)
 
void SetTheta (double theta)
 
Double_t GetTheta ()
 
Double_t GetR ()
 
int MergeTo (PndTrkLegendreCluster *cluster2)
 
Bool_t operator== (const PndTrkCluster cluster) const
 
void AddHit (PndTrkHit *hit)
 
void AddHit (PndTrkHit hit)
 
void DeleteHit (PndTrkHit *hit)
 
void DeleteHit (Int_t index)
 
void DeleteHitAndCompress (PndTrkHit *hit)
 
void DeleteHitAndCompress (Int_t index)
 
void DeleteHits (std::vector< int > todelete)
 
void DeleteAllHits ()
 
void SetIRegion (int iregion)
 
PndTrkHitGetHit (int index)
 
PndTrkHitGetPreviousHit (int index)
 
PndTrkHitGetNextHit (int index)
 
Int_t GetNofHits ()
 
Int_t GetIRegion ()
 
Double_t GetMinimumXYDistanceFromHit (PndTrkHit *hit)
 
PndTrkHitSearchHit (PndTrkHit *hit)
 
void Print ()
 
void PrintList ()
 
void Draw (Color_t color=kBlack)
 
void LightUp ()
 
Bool_t DoesContain (PndTrkHit *hit)
 
Bool_t IsSimilarTo (PndTrkCluster *cluster2)
 
Int_t NofSharedHits (PndTrkCluster *cluster2)
 
Bool_t SharedAt (PndTrkCluster *cluster2, double limit)
 
int MergeTo (PndTrkCluster *cluster2)
 
PndTrkCluster GetMvdStripHitList ()
 
PndTrkCluster GetMvdPixelHitList ()
 
PndTrkCluster GetMvdHitList ()
 
PndTrkCluster GetSttParallelHitList ()
 
PndTrkCluster GetSttSkewHitList ()
 
PndTrkCluster GetSttHitList ()
 
Bool_t FindExtremitiesFrom (TVector3 frompoint, PndTrkHit &firstextremity, PndTrkHit &secondextremity)
 
Bool_t CheckClusterAgainsV (TVector3 frompoint, PndTrkHit *firstextremity, PndTrkHit *secondextremity)
 
Bool_t ComputeCircle (TVector3 v1, TVector3 v2, TVector3 v3, double &x0, double &y0, double &R)
 
PndTrkHitGetPocaTo (TVector3 frompoint)
 
Bool_t SplitAtHit (PndTrkHit *athit, PndTrkCluster &cluster1, PndTrkCluster &cluster2)
 
Bool_t SplitV (PndTrkHit *athit, PndTrkHit *firstextremity, PndTrkHit *secondextremity, PndTrkCluster &cluster1, PndTrkCluster &cluster2)
 
void SortFromHit (PndTrkHit *firstextremity, TString criterion)
 
void Sort ()
 
void ReverseSort ()
 
Bool_t IsSorted ()
 
void AddCluster (PndTrkCluster *cluster)
 
void AddClusterAndSortFrom (PndTrkCluster *cluster, TVector3 frompoint, TString criterion)
 
void Replace (PndTrkHit *hit)
 
void Clear (Option_t *="")
 

Protected Member Functions

 ClassDef (PndTrkLegendreCluster, 1)
 
 ClassDef (PndTrkCluster, 1)
 

Protected Attributes

double fTheta
 
double fR
 
TVector3 fFromPoint
 
Int_t fIRegion
 
TClonesArray fHitList
 

Detailed Description

PndTrkLegendreCluster

Author
Lia Lavezzi

Definition at line 11 of file PndTrkLegendreCluster.h.

Constructor & Destructor Documentation

PndTrkLegendreCluster::PndTrkLegendreCluster ( )
PndTrkLegendreCluster::~PndTrkLegendreCluster ( )
virtual

Definition at line 18 of file PndTrkLegendreCluster.cxx.

18 {}
PndTrkLegendreCluster::PndTrkLegendreCluster ( const PndTrkLegendreCluster cluster)

Definition at line 20 of file PndTrkLegendreCluster.cxx.

20  : PndTrkCluster(cluster) {
21  //, fTheta(cluster.fTheta), fR(cluster.fR) {
22 
23 // ((PndTrkCluster&)cluster).fFromPoint = fFromPoint;
24 // ((PndTrkCluster&)cluster).fIRegion = fIRegion;
25 // ((PndTrkCluster&)cluster).hitlist = hitlist;
26  *this = cluster;
27 }
PndTrkLegendreCluster::PndTrkLegendreCluster ( const PndTrkCluster cluster)

Definition at line 29 of file PndTrkLegendreCluster.cxx.

References fR, fTheta, and PndTrkLegendreCluster().

29  : PndTrkCluster(cluster) {
30  if(dynamic_cast< const PndTrkLegendreCluster* >(&cluster)) {
31  fTheta = ((PndTrkLegendreCluster) cluster).fTheta;
32  fR = ((PndTrkLegendreCluster) cluster).fR;
33  }
34  else {
35  cout << ":FALSE" << endl;
36  fTheta = 14;
37  fR = 52;
38 
39  }
40 
41 }

Member Function Documentation

void PndTrkCluster::AddCluster ( PndTrkCluster cluster)
inherited

Definition at line 544 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fIRegion, PndTrkCluster::GetHit(), PndTrkCluster::GetIRegion(), PndTrkCluster::GetNofHits(), hit, and TString.

544  {
545  for(int ihit = 0; ihit < cluster->GetNofHits(); ihit++) {
546  PndTrkHit *hit = cluster->GetHit(ihit);
547  AddHit(hit);
548  }
549 
550  TString iregion1;
551  iregion1 += fIRegion;
552  TString iregion2;
553  iregion2 += cluster->GetIRegion();
554 }
void AddHit(PndTrkHit *hit)
PndTrkHit * GetHit(int index)
Int_t GetIRegion()
Definition: PndTrkCluster.h:53
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
void PndTrkCluster::AddClusterAndSortFrom ( PndTrkCluster cluster,
TVector3  frompoint,
TString  criterion 
)
inherited

Definition at line 556 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fFromPoint, PndTrkCluster::fHitList, PndTrkHit::GetDistance(), PndTrkCluster::GetHit(), PndTrkCluster::GetNofHits(), hit, PndTrkHit::SetSortVariable(), and PndTrkCluster::Sort().

556  {
557 
558  fFromPoint = frompoint;
559  PndTrkHit *hit;
560 
561  for(int ihit = 0; ihit < cluster->GetNofHits(); ihit++) {
562  hit = cluster->GetHit(ihit);
563  AddHit(hit);
564  }
565 
566  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
567  hit = (PndTrkHit* ) fHitList[ihit];
568  // hit = (PndTrkHit* ) hitlist[ihit];
569  if(criterion.CompareTo("xydistance") == 0) { // CHECK
570  double distance = hit->GetDistance(fFromPoint);
571  // cout << "distance " << distance << endl;
572  hit->SetSortVariable(distance);
573  }
574  }
575  // sorting
576  Sort();
577 
578 
579 }
void SetSortVariable(Double_t sortvar)
Definition: PndTrkHit.h:44
void AddHit(PndTrkHit *hit)
PndTrkHit * GetHit(int index)
Double_t GetDistance(PndTrkHit *fromhit)
Definition: PndTrkHit.cxx:83
TVector3 fFromPoint
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
void PndTrkCluster::AddHit ( PndTrkHit hit)
inherited

Definition at line 70 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList, and PndTrkHit::SetUsedFlag().

Referenced by PndTrkCluster::AddCluster(), PndTrkCluster::AddClusterAndSortFrom(), PndTrkLegendreSecTask2::AddHitToClusterByDistance(), PndTrkClean::CleanSectors(), PndTrkLegendreTask::Cleanup(), PndTrkLegendreSecTask::Cleanup(), PndTrkLegendreSecTask2::Cleanup(), PndTrkLegendreTask::CleanUpSkewHitList(), PndTrkLegendreSecTask::CleanUpSkewHitList(), PndTrkLegendreSecTask2::CleanUpSkewHitList(), PndTrkTrackFinder::CleanUpSkewHitList(), PndTrkLegendreSecTask::CleanupZPhiFit(), PndTrkLegendreTask::CleanupZPhiFit(), PndTrkLegendreSecTask2::CleanupZPhiFit(), PndTrkTrackFinder::CountPossibleTracks(), PndTrkLegendreNew::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack(), PndTrkTrackFinder::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack2(), PndTrkCombiLegendreTask::CreateClusterAroundTrack3(), PndTrkLegendreTask::CreateClusterByConfDistance(), PndTrkLegendreSecTask::CreateClusterByConfDistance(), PndTrkLegendreSecTask2::CreateClusterByConfDistance(), PndTrkLegendreTask::CreateClusterByDistance(), PndTrkLegendreSecTask::CreateClusterByDistance(), PndTrkLegendreSecTask2::CreateClusterByDistance(), PndTrkLegendreTask::CreateClusterByMixedDistance(), PndTrkLegendreSecTask::CreateClusterByMixedDistance(), PndTrkLegendreSecTask2::CreateClusterByMixedDistance(), PndTrkLegendreTask::CreateClusterByRealDistance(), PndTrkLegendreSecTask::CreateClusterByRealDistance(), PndTrkLegendreSecTask2::CreateClusterByRealDistance(), PndTrkLegendreNew::CreateFullClusterization(), PndTrkCombiLegendreTask::CreateFullClusterization(), PndTrkTrackFinder::CreateFullClusterization(), PndTrkLegendreTask::CreateSkewHitList(), PndTrkLegendreSecTask::CreateSkewHitList(), PndTrkLegendreSecTask2::CreateSkewHitList(), PndTrkTrackFinder::CreateSkewHitList(), PndTrkLegendreTask::CreateSttCluster(), PndTrkLegendreSecTask::CreateSttCluster(), PndTrkLegendreSecTask2::CreateSttCluster(), PndTrkLegendreSecTask2::Exec(), PndTrkLegendreNew::Exec(), PndTrkLegendreTask::Exec(), PndTrkLegendreSecTask::Exec(), PndTrkCombiLegendreTask::Exec(), PndTrkTrackFinder::Exec(), PndTrkCluster::GetMvdHitList(), PndTrkCluster::GetMvdPixelHitList(), PndTrkCluster::GetMvdStripHitList(), PndTrkCluster::GetSttHitList(), PndTrkCluster::GetSttParallelHitList(), PndTrkCluster::GetSttSkewHitList(), PndTrkCluster::MergeTo(), PndTrkCluster::Replace(), PndTrkClean::SplitAtHit(), PndTrkCluster::SplitAtHit(), and PndTrkCluster::SplitV().

70  {
71  // hitlist.Add(hit);
72  hit->SetUsedFlag(1); // CHECK
73  int size = fHitList.GetEntriesFast();
74  new(fHitList[size]) PndTrkHit(*hit);
75 }
void SetUsedFlag(Bool_t used)
Definition: PndTrkHit.h:50
TClonesArray fHitList
void PndTrkCluster::AddHit ( PndTrkHit  hit)
inherited

Definition at line 77 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList, and PndTrkHit::SetUsedFlag().

77  {
78  // hitlist.Add(hit);
79  hit.SetUsedFlag(1); // CHECK
80  int size = fHitList.GetEntriesFast();
81  new(fHitList[size]) PndTrkHit(hit);
82 }
void SetUsedFlag(Bool_t used)
Definition: PndTrkHit.h:50
TClonesArray fHitList
Bool_t PndTrkCluster::CheckClusterAgainsV ( TVector3  frompoint,
PndTrkHit firstextremity,
PndTrkHit secondextremity 
)
inherited

Definition at line 290 of file PndTrkCluster.cxx.

References Bool_t, PndTrkCluster::ComputeCircle(), counter, Double_t, fabs(), PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), PndTrkCluster::GetPocaTo(), PndTrkHit::GetPosition(), PndTrkHit::GetXYDistance(), hit, x0, and y0.

290  {
291 
292  if(fabs(firstextremity->GetPosition().Perp() - secondextremity->GetPosition().Perp()) < 2) {
293  cout << "WARNING, V detected?" << endl;
294 
295  if(firstextremity == NULL || secondextremity == NULL) {
296  cout << "NULL POINTER" << endl;
297  return kFALSE;
298  }
299 
300  if(*firstextremity == *secondextremity) {
301  cout << "COINCIDENT EXTREMITIES" << endl; // CHECK
302  return kFALSE;
303  }
304 
305 
306  PndTrkHit *pca = GetPocaTo(frompoint);
307  if(*pca == *firstextremity || *pca == *secondextremity) {
308  cout << "POCA COINCIDENT TO ONE OF THE EXTREMITIES" << endl; // CHECK
309  return kFALSE;
310  }
311 
312  Double_t x0, y0, radius = -1;
313  Bool_t computation = ComputeCircle(firstextremity->GetPosition(), secondextremity->GetPosition(), pca->GetPosition(), x0, y0, radius);
314  if(!computation) {
315  cout << "TWO POINTS ALIGNED" << endl;
316  return kFALSE;
317  }
318  cout << "circle " << x0 << " " << y0 << " " << radius << endl;
319 
320  int counter = 0;
321  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
322  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
323  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
324  if(fabs( hit->GetXYDistance(TVector3(x0, y0, 0.)) - radius) > 2) counter++;
325  }
326 
327  if(GetNofHits() - counter < 3) cout << "***************** YES ***************** " << counter << " on " << GetNofHits() << endl;
328  else cout << " ********************** NO ******************* " << counter << " " << GetNofHits() << endl;
329  return kTRUE;
330 
331  }
332  // else cout << " DISTANCE " << fabs(firstextremity->GetPosition().Perp() - secondextremity->GetPosition().Perp()) << endl;
333 
334  return kFALSE;
335 }
Double_t x0
Definition: checkhelixhit.C:70
Bool_t ComputeCircle(TVector3 v1, TVector3 v2, TVector3 v3, double &x0, double &y0, double &R)
int counter
Definition: ZeeAnalysis.C:59
Double_t
Double_t y0
Definition: checkhelixhit.C:71
TVector3 GetPosition()
Definition: PndTrkHit.h:62
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
PndTrkHit * GetPocaTo(TVector3 frompoint)
Double_t GetXYDistance(PndTrkHit *fromhit)
Definition: PndTrkHit.cxx:94
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkLegendreCluster::ClassDef ( PndTrkLegendreCluster  ,
 
)
protected
PndTrkCluster::ClassDef ( PndTrkCluster  ,
 
)
protectedinherited
void PndTrkCluster::Clear ( Option_t *  opt = "")
inherited

Definition at line 50 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList.

Referenced by PndTrkTrack::Clear(), PndTrkTrackFinder::Exec(), and PndTrkTrackFinder::Reset().

50  {
51  fHitList.Clear(opt);
52 }
TClonesArray fHitList
Bool_t PndTrkCluster::ComputeCircle ( TVector3  v1,
TVector3  v2,
TVector3  v3,
double &  x0,
double &  y0,
double &  R 
)
inherited

Definition at line 603 of file PndTrkCluster.cxx.

References Double_t, m2(), v2, X, Y, and y0.

Referenced by PndTrkCluster::CheckClusterAgainsV().

603  {
604 
605  Double_t d1 = 2 * (v1 - v2).X();
606  Double_t d2 = 2 * (v1 - v3).X();
607 
608  Double_t n1 = (v1 - v2).Y();
609  Double_t n2 = (v1 - v3).Y();
610 
611  Double_t m1 = v1.Mag2() - v2.Mag2();
612  Double_t m2 = v1.Mag2() - v3.Mag2();
613 
614  if((d2 * n1 - d1 * n2) == 0) {
615  cout << "allineati" << endl;
616  return kFALSE;
617  }
618 
619  y0 = 0.5 * (d2 * m1 - d1 * m2) / (d2 * n1 - d1 * n2);
620  if(d1 != 0) x0 = (m1 - 2 * n1 * y0)/d1;
621  else x0 = (m2 - 2 * n2 * y0)/d2;
622 
623  R = (v1 - TVector3(x0, y0, 0)).Mag();
624  return kTRUE;
625 }
Double_t x0
Definition: checkhelixhit.C:70
double Y
Definition: anaLmdDigi.C:68
TString m2(TString pts, TString exts="e px py pz")
Definition: invexp.C:117
Double_t
Double_t y0
Definition: checkhelixhit.C:71
double X
Definition: anaLmdDigi.C:68
TVector3 v1
Definition: bump_analys.C:40
TVector3 v2
Definition: bump_analys.C:40
Double_t R
Definition: checkhelixhit.C:61
void PndTrkCluster::DeleteAllHits ( )
inherited

Definition at line 116 of file PndTrkCluster.cxx.

References PndTrkCluster::DeleteHit(), PndTrkCluster::fHitList, and PndTrkCluster::GetNofHits().

Referenced by PndTrkLegendreSecTask::CreateSttCluster(), PndTrkLegendreTask::CreateSttCluster(), and PndTrkLegendreSecTask2::CreateSttCluster().

116  {
117  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
118  DeleteHit(ihit);
119  }
120  fHitList.Compress();
121  // hitlist.Compress();
122 }
void DeleteHit(PndTrkHit *hit)
TClonesArray fHitList
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
void PndTrkCluster::DeleteHit ( PndTrkHit hit)
inherited

Definition at line 86 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList, and PndTrkHit::SetUsedFlag().

Referenced by PndTrkCluster::DeleteAllHits(), PndTrkCluster::DeleteHitAndCompress(), and PndTrkCluster::DeleteHits().

86  {
87  hit->SetUsedFlag(0);
88  // hitlist.Remove(hit);
89  fHitList.Remove(hit);
90 }
void SetUsedFlag(Bool_t used)
Definition: PndTrkHit.h:50
TClonesArray fHitList
void PndTrkCluster::DeleteHit ( Int_t  index)
inherited

Definition at line 100 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList.

100  {
101  //PndTrkHit* hit = (PndTrkHit*) fHitList.At(index); //[R.K. 01/2017] unused variable
102 // hitlist.RemoveAt(index);
103 // hitlist.Compress(); // CHECK
104  fHitList.RemoveAt(index);
105  fHitList.Compress(); // CHECK
106 
107 }
TClonesArray fHitList
void PndTrkCluster::DeleteHitAndCompress ( PndTrkHit hit)
inherited

Definition at line 93 of file PndTrkCluster.cxx.

References PndTrkCluster::DeleteHit(), and PndTrkCluster::fHitList.

Referenced by PndTrkTrackFinder::Exec(), and PndTrkCluster::Replace().

93  {
94  DeleteHit(hit);
95  // hitlist.Compress(); // CHECK
96  fHitList.Compress();
97 }
void DeleteHit(PndTrkHit *hit)
TClonesArray fHitList
void PndTrkCluster::DeleteHitAndCompress ( Int_t  index)
inherited

Definition at line 110 of file PndTrkCluster.cxx.

References PndTrkCluster::DeleteHit(), and PndTrkCluster::fHitList.

110  {
111  DeleteHit(index);
112  // hitlist.Compress(); // CHECK
113  fHitList.Compress(); // CHECK
114 }
void DeleteHit(PndTrkHit *hit)
TClonesArray fHitList
void PndTrkCluster::DeleteHits ( std::vector< int >  todelete)
inherited

Definition at line 124 of file PndTrkCluster.cxx.

References PndTrkCluster::DeleteHit(), and PndTrkCluster::fHitList.

Referenced by PndTrkClean::Cleanup2().

124  {
125  for(size_t ihit = 0; ihit < todelete.size(); ihit++) {
126  int hitno = todelete[ihit];
127  DeleteHit(hitno);
128  }
129  // hitlist.Compress();
130  fHitList.Compress();
131 }
void DeleteHit(PndTrkHit *hit)
TClonesArray fHitList
Bool_t PndTrkCluster::DoesContain ( PndTrkHit hit)
inherited
void PndTrkCluster::Draw ( Color_t  color = kBlack)
inherited

Definition at line 769 of file PndTrkCluster.cxx.

References PndTrkHit::Draw(), PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), and hit.

Referenced by PndTrkLegendreNew::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack(), PndTrkTrackFinder::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack2(), PndTrkCombiLegendreTask::CreateClusterAroundTrack3(), PndTrkTrackFinder::Exec(), and PndTrkCluster::LightUp().

769  {
770  // cout << "S: " << hitlist.size() << endl;
771  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
772  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
773  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
774  hit->Draw(color);
775  }
776 }
void Draw(Color_t color)
Definition: PndTrkHit.cxx:109
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
Bool_t PndTrkCluster::FindExtremitiesFrom ( TVector3  frompoint,
PndTrkHit firstextremity,
PndTrkHit secondextremity 
)
inherited

Definition at line 238 of file PndTrkCluster.cxx.

References counter, Double_t, PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), PndTrkHit::GetXYDistance(), hit, MAXNOFHITSINCLUSTER, nhits, and STTPARALDISTANCE.

238  {
239  const int nhits = MAXNOFHITSINCLUSTER; // hitlist.size(); // CHECK
240  int associations[nhits] = {0};
241  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
242  // PndTrkHit *hit1 = (PndTrkHit*) hitlist[ihit];
243  PndTrkHit *hit1 = (PndTrkHit*) fHitList.At(ihit);
244  for(int jhit = 0; jhit < GetNofHits(); jhit++) {
245  if(ihit == jhit) continue;
246  // PndTrkHit *hit2 = (PndTrkHit*) hitlist[jhit];
247  PndTrkHit *hit2 = (PndTrkHit*) fHitList.At(jhit);
248 
249  if(hit1->GetXYDistance(hit2) < STTPARALDISTANCE) {
250  associations[ihit]++;
251  }
252  }
253  }
254 
255  int counter = 0;
256  Double_t tmpdistance1 = 1000, tmpdistance2 = -1;
257 
258  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
259  if(associations[ihit] != 1) continue;
260  counter++;
261  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
262  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
263  double distance = hit->GetXYDistance(frompoint);
264  if(distance < tmpdistance1) {
265  tmpdistance1 = distance;
266  firstextremity = *hit;
267  }
268 
269  if(distance > tmpdistance2) {
270  tmpdistance2 = distance;
271  secondextremity = *hit;
272  }
273  }
274 
275  if(counter == 2) return kTRUE;
276 
277  if(counter == 0) cout << "NO EXTREMITY FOUND :-(" << endl;
278  if(counter > 2) cout << "TOO MANY EXTREMITIES FOUND :-( " << counter << endl;
279  return kFALSE;
280 }
int counter
Definition: ZeeAnalysis.C:59
#define MAXNOFHITSINCLUSTER
Definition: PndTrkCluster.h:17
Double_t
#define STTPARALDISTANCE
Double_t GetXYDistance(PndTrkHit *fromhit)
Definition: PndTrkHit.cxx:94
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkHit * PndTrkCluster::GetHit ( int  index)
inherited

Definition at line 643 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList.

Referenced by PndTrkCluster::AddCluster(), PndTrkCluster::AddClusterAndSortFrom(), PndTrkLegendreNew::AnalyticalFit(), PndTrkTrackFinder::AnalyticalFit(), PndTrkCombiLegendreTask::AnalyticalFit(), PndTrkLegendreNew::AnalyticalFit2(), PndTrkTrackFinder::AnalyticalFit2(), PndTrkCombiLegendreTask::AnalyticalFit2(), PndTrkTrackFinder::AnalyticalParabolaFit(), PndTrkTrackFinder::Apollonius(), PndTrkClean::CheckSectorDistribution(), PndTrkClean::CleanSectors(), PndTrkCombiLegendreTask::CleanTrack(), PndTrkLegendreSecTask::Cleanup(), PndTrkLegendreTask::Cleanup(), PndTrkLegendreSecTask2::Cleanup(), PndTrkClean::Cleanup2(), PndTrkLegendreSecTask::CleanUpSkewHitList(), PndTrkLegendreTask::CleanUpSkewHitList(), PndTrkLegendreSecTask2::CleanUpSkewHitList(), PndTrkTrackFinder::CleanUpSkewHitList(), PndTrkLegendreSecTask::CleanupZPhiFit(), PndTrkLegendreTask::CleanupZPhiFit(), PndTrkLegendreSecTask2::CleanupZPhiFit(), PndTrkTrack::ComputeCharge(), PndTrkCombiLegendreTask::ComputePerpendicularChi2(), PndTrkLegendreSecTask::ComputeZRediduals(), PndTrkLegendreTask::ComputeZRediduals(), PndTrkLegendreSecTask2::ComputeZRediduals(), PndTrkTrack::ConvertToPndTrack(), PndTrkTrack::ConvertToPndTrackCand(), PndTrkLegendreSecTask::CorrectZ(), PndTrkLegendreTask::CorrectZ(), PndTrkLegendreSecTask2::CorrectZ(), PndTrkTrackFinder::CountPossibleTracks(), PndTrkLegendreNew::CountTracksInCluster(), PndTrkCombiLegendreTask::CountTracksInCluster(), PndTrkTrackFinder::CountTracksInCluster(), PndTrkLegendreNew::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack(), PndTrkTrackFinder::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack2(), PndTrkCombiLegendreTask::CreateClusterAroundTrack3(), PndTrkLegendreNew::CreateFullClusterization(), PndTrkCombiLegendreTask::CreateFullClusterization(), PndTrkTrackFinder::CreateFullClusterization(), PndTrkLegendreSecTask::CreateSttCluster(), PndTrkLegendreTask::CreateSttCluster(), PndTrkLegendreSecTask2::CreateSttCluster(), PndTrkTrack::Draw(), PndTrkLegendreSecTask2::Exec(), PndTrkLegendreTask::Exec(), PndTrkLegendreNew::Exec(), PndTrkLegendreSecTask::Exec(), PndTrkCombiLegendreTask::Exec(), PndTrkTrackFinder::Exec(), PndTrkLegendreSecTask2::FillConformalHitList(), PndTrkLegendreNew::FillConformalHitList(), PndTrkCombiLegendreTask::FillConformalHitList(), PndTrkTrackFinder::FillConformalHitList(), PndTrkLegendreTask::FillLegendreHisto(), PndTrkLegendreSecTask::FillLegendreHisto(), PndTrkLegendreNew::FindReferenceHit(), PndTrkCombiLegendreTask::FindReferenceHit(), PndTrkTrackFinder::FindReferenceHit(), PndTrkLegendreSecTask2::FindReferenceHit(), PndTrkCluster::GetMinimumXYDistanceFromHit(), PndTrkCluster::MergeTo(), PndTrkTrackFinder::MinuitFit(), PndTrkTrackFinder::MinuitFit2(), PndTrkCluster::PrintList(), PndTrkClean::Split(), PndTrkClean::SplitAtHit(), PndTrkCluster::SplitV(), PndTrkLegendreTask::ZPhiFit(), PndTrkLegendreSecTask::ZPhiFit(), and PndTrkLegendreSecTask2::ZPhiFit().

643  {
644  // cout << index << " hitlist " << hitlist.GetEntriesFast() << " " << hitlist.GetEntries() << endl;
645  // cout << hitlist.At(index) << endl;
646 
647  // return (PndTrkHit*) hitlist.At(index);
648  return (PndTrkHit*) fHitList.At(index);
649 }
TClonesArray fHitList
Int_t PndTrkCluster::GetIRegion ( )
inlineinherited

Definition at line 53 of file PndTrkCluster.h.

References PndTrkCluster::fIRegion.

Referenced by PndTrkCluster::AddCluster().

53 { return fIRegion; }
Double_t PndTrkCluster::GetMinimumXYDistanceFromHit ( PndTrkHit hit)
inherited

Definition at line 717 of file PndTrkCluster.cxx.

References PndTrkCluster::GetHit(), PndTrkCluster::GetNofHits(), and PndTrkHit::GetXYDistance().

Referenced by PndTrkLegendreSecTask2::CheckVicinity().

717  {
718  double distance = 1000000;
719  // cout << " from hit " << hit->GetHitID() << " " << hit->GetDetectorID() << endl;
720 
721  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
722  PndTrkHit *clushit = GetHit(ihit);
723  double tmpdistance = hit->GetXYDistance(clushit);
724  if(tmpdistance < distance) {
725  distance = tmpdistance;
726  // cout << " new minimum " << clushit->GetHitID() << " " << clushit->GetDetectorID() << endl;
727  }
728  }
729  return distance;
730 }
PndTrkHit * GetHit(int index)
Double_t GetXYDistance(PndTrkHit *fromhit)
Definition: PndTrkHit.cxx:94
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkCluster PndTrkCluster::GetMvdHitList ( )
inherited

Definition at line 163 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkHit::GetIRegion(), PndTrkCluster::GetNofHits(), hit, PndTrkHit::IsMvd(), and PndTrkCluster::SetIRegion().

163  {
164  PndTrkCluster cluster;
165  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
166  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
167  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
168  if(hit->IsMvd()) {
169  cluster.AddHit(hit);
170  cluster.SetIRegion(hit->GetIRegion());
171  // cout << "found one" << hit->GetHitID() << endl;
172  }
173  }
174  return cluster;
175 }
void AddHit(PndTrkHit *hit)
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
Bool_t IsMvd()
Definition: PndTrkHit.h:77
Int_t GetIRegion()
Definition: PndTrkHit.h:64
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkCluster PndTrkCluster::GetMvdPixelHitList ( )
inherited

Definition at line 149 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), hit, PndTrkHit::IsMvdPixel(), MVDPIXEL, and PndTrkCluster::SetIRegion().

Referenced by PndTrkLegendreSecTask::Cleanup(), PndTrkLegendreTask::Cleanup(), and PndTrkLegendreSecTask2::Cleanup().

149  {
150  PndTrkCluster cluster;
151  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
152  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
153  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
154  if(hit->IsMvdPixel()) {
155  cluster.AddHit(hit);
156  cluster.SetIRegion(MVDPIXEL);
157  // cout << "found one" << hit->GetHitID() << endl;
158  }
159  }
160  return cluster;
161 }
void AddHit(PndTrkHit *hit)
Bool_t IsMvdPixel()
Definition: PndTrkHit.h:75
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
#define MVDPIXEL
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkCluster PndTrkCluster::GetMvdStripHitList ( )
inherited

Definition at line 135 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), hit, PndTrkHit::IsMvdStrip(), MVDSTRIP, and PndTrkCluster::SetIRegion().

Referenced by PndTrkLegendreSecTask::Cleanup(), PndTrkLegendreTask::Cleanup(), and PndTrkLegendreSecTask2::Cleanup().

135  {
136  PndTrkCluster cluster;
137  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
138  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
139  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
140  if(hit->IsMvdStrip()) {
141  cluster.AddHit(hit);
142  cluster.SetIRegion(MVDSTRIP);
143  // cout << "found one" << hit->GetHitID() << endl;
144  }
145  }
146  return cluster;
147 }
void AddHit(PndTrkHit *hit)
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
Bool_t IsMvdStrip()
Definition: PndTrkHit.h:76
#define MVDSTRIP
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkHit * PndTrkCluster::GetNextHit ( int  index)
inherited

Definition at line 657 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList, and PndTrkCluster::GetNofHits().

Referenced by PndTrkClean::Cleanup2().

657  {
658  if(index == GetNofHits() - 1) return NULL;
659  // return (PndTrkHit*) hitlist[index + 1];
660  return (PndTrkHit*) fHitList.At(index + 1);
661 }
TClonesArray fHitList
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
Int_t PndTrkCluster::GetNofHits ( )
inlineinherited

Definition at line 52 of file PndTrkCluster.h.

References PndTrkCluster::fHitList.

Referenced by PndTrkCluster::AddCluster(), PndTrkCluster::AddClusterAndSortFrom(), PndTrkLegendreNew::AnalyticalFit(), PndTrkTrackFinder::AnalyticalFit(), PndTrkCombiLegendreTask::AnalyticalFit(), PndTrkLegendreNew::AnalyticalFit2(), PndTrkTrackFinder::AnalyticalFit2(), PndTrkCombiLegendreTask::AnalyticalFit2(), PndTrkTrackFinder::AnalyticalParabolaFit(), PndTrkTrackFinder::Apollonius(), PndTrkCluster::CheckClusterAgainsV(), PndTrkClean::CheckSectorDistribution(), PndTrkClean::CleanSectors(), PndTrkCombiLegendreTask::CleanTrack(), PndTrkLegendreSecTask::Cleanup(), PndTrkLegendreTask::Cleanup(), PndTrkLegendreSecTask2::Cleanup(), PndTrkClean::Cleanup2(), PndTrkLegendreTask::CleanUpSkewHitList(), PndTrkLegendreSecTask::CleanUpSkewHitList(), PndTrkLegendreSecTask2::CleanUpSkewHitList(), PndTrkTrackFinder::CleanUpSkewHitList(), PndTrkLegendreTask::CleanupZPhiFit(), PndTrkLegendreSecTask::CleanupZPhiFit(), PndTrkLegendreSecTask2::CleanupZPhiFit(), PndTrkCombiLegendreTask::ClusterToConformal(), PndTrkTrack::ComputeCharge(), PndTrkCombiLegendreTask::ComputePerpendicularChi2(), PndTrkLegendreTask::ComputeZRediduals(), PndTrkLegendreSecTask::ComputeZRediduals(), PndTrkLegendreSecTask2::ComputeZRediduals(), PndTrkTrack::ConvertToPndTrack(), PndTrkTrack::ConvertToPndTrackCand(), PndTrkLegendreSecTask::CorrectZ(), PndTrkLegendreTask::CorrectZ(), PndTrkLegendreSecTask2::CorrectZ(), PndTrkTrackFinder::CountPossibleTracks(), PndTrkLegendreNew::CountTracksInCluster(), PndTrkCombiLegendreTask::CountTracksInCluster(), PndTrkTrackFinder::CountTracksInCluster(), PndTrkLegendreNew::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack(), PndTrkTrackFinder::CreateClusterAroundTrack(), PndTrkCombiLegendreTask::CreateClusterAroundTrack2(), PndTrkCombiLegendreTask::CreateClusterAroundTrack3(), PndTrkLegendreNew::CreateFullClusterization(), PndTrkCombiLegendreTask::CreateFullClusterization(), PndTrkTrackFinder::CreateFullClusterization(), PndTrkLegendreTask::CreateSttCluster(), PndTrkLegendreSecTask::CreateSttCluster(), PndTrkLegendreSecTask2::CreateSttCluster(), PndTrkCluster::DeleteAllHits(), PndTrkTrack::Draw(), PndTrkCluster::Draw(), PndTrkLegendreTask::Exec(), PndTrkLegendreSecTask2::Exec(), PndTrkLegendreSecTask::Exec(), PndTrkLegendreNew::Exec(), PndTrkCombiLegendreTask::Exec(), PndTrkTrackFinder::Exec(), PndTrkLegendreSecTask2::FillConformalHitList(), PndTrkLegendreNew::FillConformalHitList(), PndTrkCombiLegendreTask::FillConformalHitList(), PndTrkTrackFinder::FillConformalHitList(), PndTrkLegendreTask::FillLegendreHisto(), PndTrkLegendreSecTask::FillLegendreHisto(), PndTrkCluster::FindExtremitiesFrom(), PndTrkLegendreNew::FindReferenceHit(), PndTrkCombiLegendreTask::FindReferenceHit(), PndTrkTrackFinder::FindReferenceHit(), PndTrkLegendreSecTask2::FindReferenceHit(), PndTrkCluster::GetMinimumXYDistanceFromHit(), PndTrkCluster::GetMvdHitList(), PndTrkCluster::GetMvdPixelHitList(), PndTrkCluster::GetMvdStripHitList(), PndTrkCluster::GetNextHit(), PndTrkCluster::GetPocaTo(), PndTrkCluster::GetSttHitList(), PndTrkCluster::GetSttParallelHitList(), PndTrkCluster::GetSttSkewHitList(), PndTrkCluster::IsSimilarTo(), PndTrkLegendreNew::LegendreFit(), PndTrkCombiLegendreTask::LegendreFit(), PndTrkClean::MergeClusters(), PndTrkCluster::MergeTo(), PndTrkTrackFinder::MinuitFit(), PndTrkTrackFinder::MinuitFit2(), PndTrkCluster::NofSharedHits(), PndTrkCluster::operator==(), PndTrkTrack::operator==(), PndTrkCluster::Print(), PndTrkCluster::PrintList(), PndTrkCluster::ReverseSort(), PndTrkCluster::SharedAt(), PndTrkCluster::SortFromHit(), PndTrkClean::Split(), PndTrkClean::SplitAtHit(), PndTrkCluster::SplitAtHit(), PndTrkCluster::SplitV(), PndTrkLegendreSecTask::ZPhiFit(), PndTrkLegendreTask::ZPhiFit(), and PndTrkLegendreSecTask2::ZPhiFit().

52 { return fHitList.GetEntriesFast(); }
TClonesArray fHitList
PndTrkHit * PndTrkCluster::GetPocaTo ( TVector3  frompoint)
inherited

Definition at line 583 of file PndTrkCluster.cxx.

References Double_t, PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), PndTrkHit::GetXYDistance(), and hit.

Referenced by PndTrkCluster::CheckClusterAgainsV().

583  {
584  // cout << "getPocaTo" << endl;
585  Double_t tmpdistance = 1000;
586 
587  // PndTrkHit *tmphit = (PndTrkHit* ) hitlist[0];
588  PndTrkHit *tmphit = (PndTrkHit* ) fHitList[0];
589 
590  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
591  // PndTrkHit *hit = (PndTrkHit* ) hitlist[ihit];
592  PndTrkHit *hit = (PndTrkHit* ) fHitList[ihit];
593 
594  double distance = hit->GetXYDistance(frompoint);
595  if(distance < tmpdistance) {
596  tmpdistance = distance;
597  tmphit = hit;
598  }
599  }
600  return tmphit;
601 }
Double_t
Double_t GetXYDistance(PndTrkHit *fromhit)
Definition: PndTrkHit.cxx:94
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkHit * PndTrkCluster::GetPreviousHit ( int  index)
inherited

Definition at line 651 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList.

Referenced by PndTrkClean::Cleanup2().

651  {
652  if(index == 0) return NULL;
653  // return (PndTrkHit*) hitlist[index - 1];
654  return (PndTrkHit*) fHitList.At(index - 1);
655 }
TClonesArray fHitList
Double_t PndTrkLegendreCluster::GetR ( )
inline

Definition at line 26 of file PndTrkLegendreCluster.h.

References fR.

Referenced by PndTrkClean::MergeClusters(), and MergeTo().

26 { return fR; }
PndTrkCluster PndTrkCluster::GetSttHitList ( )
inherited

Definition at line 206 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkHit::GetIRegion(), PndTrkCluster::GetNofHits(), hit, PndTrkHit::IsStt(), and PndTrkCluster::SetIRegion().

207  {
208  PndTrkCluster cluster;
209  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
210  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
211  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
212  if(hit->IsStt()) {
213  cluster.AddHit(hit);
214  cluster.SetIRegion(hit->GetIRegion());
215  // cout << "found one" << hit->GetHitID() << endl;
216  }
217  }
218  return cluster;
219 }
void AddHit(PndTrkHit *hit)
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
Int_t GetIRegion()
Definition: PndTrkHit.h:64
Bool_t IsStt()
Definition: PndTrkHit.h:72
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkCluster PndTrkCluster::GetSttParallelHitList ( )
inherited

Definition at line 177 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkHit::GetIRegion(), PndTrkCluster::GetNofHits(), hit, PndTrkHit::IsSttParallel(), and PndTrkCluster::SetIRegion().

Referenced by PndTrkLegendreSecTask::Cleanup(), PndTrkLegendreTask::Cleanup(), and PndTrkLegendreSecTask2::Cleanup().

177  {
178  PndTrkCluster cluster;
179  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
180  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
181  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
182  if(hit->IsSttParallel()) {
183  cluster.AddHit(hit);
184  cluster.SetIRegion(hit->GetIRegion());
185  // cout << "found one" << hit->GetHitID() << endl;
186  }
187  }
188  return cluster;
189 }
void AddHit(PndTrkHit *hit)
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
Bool_t IsSttParallel()
Definition: PndTrkHit.h:70
Int_t GetIRegion()
Definition: PndTrkHit.h:64
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkCluster PndTrkCluster::GetSttSkewHitList ( )
inherited

Definition at line 191 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkHit::GetIRegion(), PndTrkCluster::GetNofHits(), hit, PndTrkHit::IsSttSkew(), and PndTrkCluster::SetIRegion().

192 {
193  PndTrkCluster cluster;
194  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
195  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
196  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
197  if(hit->IsSttSkew()) {
198  cluster.AddHit(hit);
199  cluster.SetIRegion(hit->GetIRegion());
200  // cout << "found one" << hit->GetHitID() << endl;
201  }
202  }
203  return cluster;
204 }
void AddHit(PndTrkHit *hit)
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
Int_t GetIRegion()
Definition: PndTrkHit.h:64
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
Bool_t IsSttSkew()
Definition: PndTrkHit.h:71
Double_t PndTrkLegendreCluster::GetTheta ( )
inline

Definition at line 25 of file PndTrkLegendreCluster.h.

References fTheta.

Referenced by PndTrkClean::MergeClusters(), and MergeTo().

25 { return fTheta; }
Bool_t PndTrkCluster::IsSimilarTo ( PndTrkCluster cluster2)
inherited

Definition at line 665 of file PndTrkCluster.cxx.

References PndTrkCluster::GetNofHits(), and PndTrkCluster::NofSharedHits().

Referenced by PndTrkClean::MergeClusters().

665  {
666  int similarity = NofSharedHits(cluster2);
667  if(((double) similarity/GetNofHits()) > 0.5 || ((double) similarity/cluster2->GetNofHits()) > 0.5) return kTRUE;
668  return kFALSE;
669 }
Int_t NofSharedHits(PndTrkCluster *cluster2)
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
Bool_t PndTrkCluster::IsSorted ( )
inlineinherited

Definition at line 93 of file PndTrkCluster.h.

References PndTrkCluster::fHitList.

93 { return fHitList.IsSorted(); }
TClonesArray fHitList
void PndTrkCluster::LightUp ( )
inherited
int PndTrkLegendreCluster::MergeTo ( PndTrkLegendreCluster cluster2)

Definition at line 51 of file PndTrkLegendreCluster.cxx.

References fR, fTheta, GetR(), GetTheta(), and PndTrkCluster::MergeTo().

Referenced by PndTrkClean::MergeClusters().

51  {
52 
53  cout << "THETA MERGE: " << fTheta << " " << cluster2->GetTheta() << endl;
54  fTheta = (fTheta + cluster2->GetTheta())/2.;
55  cout << "THETA MERGED: " << fTheta << endl;
56 
57  cout << "R MERGE: " << fR << " " << cluster2->GetR() << endl;
58  fR = (fR + cluster2->GetR())/2.;
59  cout << "R MERGED: " << fR << endl;
60 
61  return PndTrkCluster::MergeTo(cluster2);
62 
63 }
int MergeTo(PndTrkCluster *cluster2)
int PndTrkCluster::MergeTo ( PndTrkCluster cluster2)
inherited

Definition at line 695 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::DoesContain(), PndTrkCluster::GetHit(), PndTrkCluster::GetNofHits(), hit, and PndTrkCluster::Sort().

Referenced by PndTrkTrackFinder::Exec(), and MergeTo().

695  {
696 
697  std::vector<int> tobeadded;
698  for(int ihit = 0; ihit < cluster2->GetNofHits(); ihit++) {
699  PndTrkHit *hit = cluster2->GetHit(ihit);
700  if(DoesContain(hit)) continue;
701  tobeadded.push_back(ihit);
702  }
703 
704  for(size_t ihit = 0; ihit < tobeadded.size(); ihit++) {
705  int hitno = tobeadded.at(ihit);
706  PndTrkHit *hit = cluster2->GetHit(hitno);
707  AddHit(hit);
708  }
709 
710  Sort();
711  return GetNofHits();
712 }
void AddHit(PndTrkHit *hit)
PndTrkHit * GetHit(int index)
Bool_t DoesContain(PndTrkHit *hit)
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
Int_t PndTrkCluster::NofSharedHits ( PndTrkCluster cluster2)
inherited

Definition at line 671 of file PndTrkCluster.cxx.

References PndTrkCluster::DoesContain(), PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), and hit.

Referenced by PndTrkCluster::IsSimilarTo(), and PndTrkCluster::SharedAt().

671  {
672  int similarity = 0;
673 // cout << "GetNofHits " << GetNofHits() << endl;
674  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
675  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
676  if(cluster2->DoesContain(hit)) {
677 // cout << hit->GetDetectorID() << " " << hit->GetHitID() << " simile" << endl;
678  similarity++;
679  }
680  }
681  // cout << "similarity " << similarity << endl;
682  return similarity;
683 }
Bool_t DoesContain(PndTrkHit *hit)
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkLegendreCluster & PndTrkLegendreCluster::operator= ( const PndTrkLegendreCluster cluster)

Definition at line 43 of file PndTrkLegendreCluster.cxx.

References fR, fTheta, and PndTrkCluster::operator=().

43  {
44  PndTrkCluster::operator=(cluster);
45  fTheta = cluster.fTheta;
46  fR = cluster.fR;
47 
48  return *this;
49 }
PndTrkCluster & operator=(const PndTrkCluster &cluster)
Bool_t PndTrkCluster::operator== ( const PndTrkCluster  cluster) const
inherited

Definition at line 63 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList, and PndTrkCluster::GetNofHits().

63  {
64  // return hitlist.GetEntriesFast() == cluster.GetNofHits(); // CHECK
65  return fHitList.GetEntriesFast() == cluster.GetNofHits(); // CHECK
66 
67 }
TClonesArray fHitList
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
void PndTrkCluster::Print ( )
inherited

Definition at line 749 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList, PndTrkCluster::fIRegion, PndTrkHit::GetDetectorID(), PndTrkHit::GetHitID(), PndTrkCluster::GetNofHits(), PndTrkHit::GetSortVariable(), and hit.

Referenced by PndTrkClean::MergeClusters().

749  {
750  cout << "###############################" << endl;
751  cout << "iregion " << fIRegion << " with nhits " << GetNofHits() << endl;
752  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
753  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
754  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
755  cout << " " << hit->GetHitID() << " " << hit->GetDetectorID() << " " << hit->GetSortVariable() << endl;
756  }
757 }
Int_t GetHitID()
Definition: PndTrkHit.h:56
Int_t GetDetectorID()
Definition: PndTrkHit.h:57
Double_t GetSortVariable()
Definition: PndTrkHit.h:66
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
void PndTrkCluster::PrintList ( )
inherited

Definition at line 759 of file PndTrkCluster.cxx.

References PndTrkCluster::GetHit(), PndTrkHit::GetHitID(), PndTrkCluster::GetNofHits(), and hit.

759  {
760  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
761  PndTrkHit *hit = GetHit(ihit);
762  cout << " " << hit->GetHitID();
763  }
764  cout << endl;
765 }
PndTrkHit * GetHit(int index)
Int_t GetHitID()
Definition: PndTrkHit.h:56
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
void PndTrkCluster::Replace ( PndTrkHit hit)
inherited

Definition at line 636 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::DeleteHitAndCompress(), and PndTrkCluster::SearchHit().

Referenced by PndTrkLegendreSecTask::Exec(), PndTrkLegendreSecTask2::Exec(), and PndTrkLegendreTask::Exec().

636  {
637  PndTrkHit *oldhit = (PndTrkHit*) SearchHit(hit);
638  // cout << "oldhit " << oldhit << " " << hit << endl;
639  DeleteHitAndCompress(oldhit);
640  AddHit(hit);
641 }
PndTrkHit * SearchHit(PndTrkHit *hit)
void DeleteHitAndCompress(PndTrkHit *hit)
void AddHit(PndTrkHit *hit)
void PndTrkCluster::ReverseSort ( )
inherited

Definition at line 519 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList, PndTrkCluster::GetNofHits(), PndTrkHit::GetSortVariable(), hit, and PndTrkHit::SetSortVariable().

Referenced by PndTrkTrackFinder::Exec().

520 {
521  // CHECK each TObject must return IsSortable = kTRUE
522  PndTrkHit *hit;
523  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
524  // hit = (PndTrkHit* ) hitlist[ihit];
525  hit = (PndTrkHit* ) fHitList[ihit];
526 
527  int srt = hit->GetSortVariable();
528  hit->SetSortVariable(-srt);
529  }
530  // hitlist.Sort();
531  fHitList.Sort();
532 
533  // reput the sort variable as they were before
534  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
535  hit = (PndTrkHit* ) fHitList[ihit];
536  int srt = hit->GetSortVariable();
537  hit->SetSortVariable(-srt);
538  }
539 
540 }
void SetSortVariable(Double_t sortvar)
Definition: PndTrkHit.h:44
Double_t GetSortVariable()
Definition: PndTrkHit.h:66
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
PndTrkHit * PndTrkCluster::SearchHit ( PndTrkHit hit)
inherited

Definition at line 224 of file PndTrkCluster.cxx.

References PndTrkCluster::fHitList.

Referenced by PndTrkCluster::Replace(), and PndTrkCluster::SplitV().

224  {
225  // return (PndTrkHit*) hitlist.FindObject(hit);
226  return (PndTrkHit*) fHitList.FindObject(hit);
227 }
TClonesArray fHitList
void PndTrkCluster::SetIRegion ( int  iregion)
inlineinherited
void PndTrkLegendreCluster::SetR ( double  r)
inline

Definition at line 22 of file PndTrkLegendreCluster.h.

References fR, and r.

22 { fR = r; }
double r
Definition: RiemannTest.C:14
void PndTrkLegendreCluster::SetTheta ( double  theta)
inline

Definition at line 23 of file PndTrkLegendreCluster.h.

References fTheta, and theta.

Bool_t PndTrkCluster::SharedAt ( PndTrkCluster cluster2,
double  limit 
)
inherited

Definition at line 685 of file PndTrkCluster.cxx.

References PndTrkCluster::GetNofHits(), and PndTrkCluster::NofSharedHits().

Referenced by PndTrkTrackFinder::Exec().

685  {
686  int similarity = NofSharedHits(cluster2);
687 // cout << "similarity " << similarity << " on " << GetNofHits() << " and " << cluster2->GetNofHits() << endl;
688 
689  if(((double) similarity/GetNofHits()) > limit || ((double) similarity/cluster2->GetNofHits()) > limit) return kTRUE;
690  return kFALSE;
691 }
Int_t NofSharedHits(PndTrkCluster *cluster2)
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
double limit
Definition: dedx_bands.C:18
void PndTrkCluster::Sort ( )
inherited
void PndTrkCluster::SortFromHit ( PndTrkHit firstextremity,
TString  criterion 
)
inherited

Definition at line 488 of file PndTrkCluster.cxx.

References PndTrkCluster::fFromPoint, PndTrkCluster::fHitList, PndTrkHit::GetDistance(), PndTrkCluster::GetNofHits(), PndTrkHit::GetPosition(), hit, PndTrkHit::SetSortVariable(), and PndTrkCluster::Sort().

488  {
489 
490  // cout << "------------------------------------ sorting" << endl;
491  fFromPoint = firstextremity->GetPosition();
492  PndTrkHit *hit;
493  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
494  // hit = (PndTrkHit*) hitlist[ihit];
495  hit = (PndTrkHit*) fHitList[ihit];
496 
497  if(criterion.CompareTo("xydistance") == 0) { // CHECK
498  double distance = hit->GetDistance(fFromPoint);
499  // cout << "distance " << distance << endl;
500  hit->SetSortVariable(distance);
501  }
502 
503  }
504  // sorting
505  Sort() ;
506 }
void SetSortVariable(Double_t sortvar)
Definition: PndTrkHit.h:44
Double_t GetDistance(PndTrkHit *fromhit)
Definition: PndTrkHit.cxx:83
TVector3 GetPosition()
Definition: PndTrkHit.h:62
TVector3 fFromPoint
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
Bool_t PndTrkCluster::SplitAtHit ( PndTrkHit athit,
PndTrkCluster cluster1,
PndTrkCluster cluster2 
)
inherited

Definition at line 338 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkHit::GetHitID(), PndTrkCluster::GetNofHits(), PndTrkHit::GetPosition(), PndTrkHit::GetXYDistance(), hit, and STTPARALDISTANCE.

338  {
339 
340  // PndTrkHit *tmphit = (PndTrkHit*) hitlist[0];
341  PndTrkHit *tmphit = (PndTrkHit*) fHitList.At(0);
342 
343  cluster1.AddHit(athit);
344  cluster2.AddHit(athit);
345  TVector3 tmpposition = athit->GetPosition();
346  PndTrkHit *secondhit = NULL;
347 
348  cout << "CLUS1: " << tmphit->GetHitID() << endl;
349  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
350  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
351  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
352  if(*hit == *athit) {
353  cout << "hit == ahit " << endl;
354  continue;
355  }
356  cout << "*** " << hit->GetHitID() << " " << hit->GetXYDistance(tmpposition) << " " << STTPARALDISTANCE << endl;
357  if(hit->GetXYDistance(tmpposition) < STTPARALDISTANCE) { // CHECK
358  cluster1.AddHit(hit);
359  tmpposition = hit->GetPosition();
360  if(secondhit == NULL) {
361  cout << "secondhit " << endl;
362  secondhit = hit;
363  }
364  else cout << "sechit " << secondhit << endl;
365  cout << "CLUS1: " << hit->GetHitID() << endl;
366 
367  }
368  }
369 
370  cout << "CLUS2: " << tmphit->GetHitID() << endl;
371 
372  tmpposition = athit->GetPosition();
373  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
374  // PndTrkHit *hit = (PndTrkHit*) hitlist[ihit];
375  PndTrkHit *hit = (PndTrkHit*) fHitList.At(ihit);
376  cout << "athit " << athit << endl;
377  cout << "hit " << hit << endl;
378  cout << "secondhit " << secondhit << endl;
379  if(*hit == *athit) continue;
380  if(*hit == *secondhit) continue;
381 
382  if(hit->GetXYDistance(tmpposition) < STTPARALDISTANCE) { // CHECK
383  cluster2.AddHit(hit);
384  tmpposition = hit->GetPosition();
385  cout << "CLUS2: " << hit->GetHitID() << endl;
386  }
387  }
388 
389  return kTRUE;
390 }
void AddHit(PndTrkHit *hit)
Int_t GetHitID()
Definition: PndTrkHit.h:56
#define STTPARALDISTANCE
TVector3 GetPosition()
Definition: PndTrkHit.h:62
Double_t GetXYDistance(PndTrkHit *fromhit)
Definition: PndTrkHit.cxx:94
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52
Bool_t PndTrkCluster::SplitV ( PndTrkHit athit,
PndTrkHit firstextremity,
PndTrkHit secondextremity,
PndTrkCluster cluster1,
PndTrkCluster cluster2 
)
inherited

Definition at line 396 of file PndTrkCluster.cxx.

References PndTrkCluster::AddHit(), PndTrkCluster::fHitList, PndTrkCluster::fIRegion, PndTrkCluster::GetHit(), PndTrkCluster::GetNofHits(), PndTrkHit::GetPosition(), hit, PndTrkCluster::SearchHit(), PndTrkCluster::SetIRegion(), PndTrkHit::SetUsedFlag(), and STTPARALDISTANCE.

396  {
397  // cout << "splitV" << endl;
398 
399 
400  cluster1.AddHit(firstextremity);
401  cluster2.AddHit(secondextremity);
402  cluster1.SetIRegion(fIRegion);
403  cluster2.SetIRegion(fIRegion);
404 
405  TVector3 tmpposition = firstextremity->GetPosition();
406 
407  PndTrkHit *hit = NULL, *tmphit = firstextremity;
408 
409 
410  // cout << "first " << firstextremity->GetHitID() << endl;
411  // cout << "lat " << secondextremity->GetHitID() << endl;
412  // cout << "athit " << athit->GetHitID() << endl;
413  // cout << endl;
414 
415  // cluster1.Print();
416  // cluster2.Print();
417  for(int iclus = 0; iclus < 2; iclus++) {
418  // cout << "iclus " << iclus << endl;
419  // cluster2.Print();
420  // set all unused
421  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
422  // hit = (PndTrkHit*) hitlist[ihit];
423  hit = (PndTrkHit*) fHitList.At(ihit);
424  hit->SetUsedFlag(kFALSE);
425  }
426 
427 
428  hit = NULL;
429 
430  if(iclus == 1) {
431  tmpposition = secondextremity->GetPosition();
432  tmphit = secondextremity;
433  }
434 
435  double tmpdistance2 = 1000;
436  while(!hit || (hit && (hit->GetPosition() - athit->GetPosition()).Perp() > STTPARALDISTANCE)) {
437  // if(!hit) cout << "here!" << endl;
438  // if(hit) cout << "here " << (hit->GetPosition() - athit->GetPosition()).Perp() << endl;
439  for(int ihit = 0; ihit < GetNofHits(); ihit++) {
440  // hit = (PndTrkHit*) hitlist[ihit];
441  hit = (PndTrkHit*) fHitList.At(ihit);
442 
443  // if(hit->IsUsed()) continue;
444  // cout << "test " << hit->GetHitID() << " " << hit->GetDistance(tmpposition) << endl;
445  cout << (*hit == *firstextremity) << " " << (*hit == *secondextremity) << " " << (*hit == *tmphit) << endl;
446 
447  // CHECK SearchHit
448  if((iclus == 0 && cluster1.SearchHit(hit) != 0) || (iclus == 1 && cluster2.SearchHit(hit) != 0)) {
449  cout << hit->GetHitID() << " is already there .................." << endl;
450  continue;
451  }
452  if(*hit == *firstextremity || *hit == *secondextremity || *hit == *tmphit) continue;
453 
454  if(hit->GetXYDistance(tmpposition) < STTPARALDISTANCE && (hit->GetPosition() - athit->GetPosition()).Perp() < tmpdistance2) { // CHECK
455  // cout << "add " << hit->GetHitID() << " to cluster " << iclus + 1 << endl;
456  if(iclus == 0) cluster1.AddHit(hit);
457  else cluster2.AddHit(hit);
458  hit->SetUsedFlag(kTRUE);
459  tmpposition = hit->GetPosition();
460  tmphit = hit;
461  tmpdistance2 = (hit->GetPosition() - athit->GetPosition()).Perp();
462  break;
463  }
464  }
465  }
466  cout << endl;
467  }
468  cout << "here2" << endl;
469 
470  // add the common hit
471  cluster1.AddHit(athit);
472  cluster2.AddHit(athit);
473 
474  if(cluster1.GetNofHits() == 0 || cluster2.GetNofHits() == 0) return kFALSE; // CHECK!!!!!!!!!!!!!!!!!
475 
476 
477 
478  // set the fUsed flags to true for all used hits
479  for(int ihit = 0; ihit < cluster1.GetNofHits(); ihit++) (cluster1.GetHit(ihit))->SetUsedFlag(kTRUE);
480  for(int ihit = 0; ihit < cluster2.GetNofHits(); ihit++) (cluster2.GetHit(ihit))->SetUsedFlag(kTRUE);
481 
482  return kTRUE;
483 }
PndTrkHit * SearchHit(PndTrkHit *hit)
void AddHit(PndTrkHit *hit)
void SetIRegion(int iregion)
Definition: PndTrkCluster.h:46
PndTrkHit * GetHit(int index)
void SetUsedFlag(Bool_t used)
Definition: PndTrkHit.h:50
#define STTPARALDISTANCE
TVector3 GetPosition()
Definition: PndTrkHit.h:62
TClonesArray fHitList
PndSdsMCPoint * hit
Definition: anasim.C:70
Int_t GetNofHits()
Definition: PndTrkCluster.h:52

Member Data Documentation

TVector3 PndTrkCluster::fFromPoint
protectedinherited
TClonesArray PndTrkCluster::fHitList
protectedinherited
Int_t PndTrkCluster::fIRegion
protectedinherited
double PndTrkLegendreCluster::fR
protected

Definition at line 31 of file PndTrkLegendreCluster.h.

Referenced by GetR(), MergeTo(), operator=(), PndTrkLegendreCluster(), and SetR().

double PndTrkLegendreCluster::fTheta
protected

Definition at line 30 of file PndTrkLegendreCluster.h.

Referenced by GetTheta(), MergeTo(), operator=(), PndTrkLegendreCluster(), and SetTheta().


The documentation for this class was generated from the following files: