FairRoot/PandaRoot
Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndSttSignalOverlap Class Reference

#include <PndSttSignalOverlap.h>

Inheritance diagram for PndSttSignalOverlap:

Public Member Functions

 PndSttSignalOverlap ()
 
 PndSttSignalOverlap (TClonesArray *OriginalHitArray)
 
 PndSttSignalOverlap (Int_t verbose, TClonesArray *OriginalHitArray)
 
 ~PndSttSignalOverlap ()
 
Bool_t OverlapSimultaneousSignals (TClonesArray *OverlapHitArray)
 
Bool_t WriteToOutputHit (Int_t hitid)
 

Private Member Functions

 ClassDef (PndSttSignalOverlap, 1)
 

Private Attributes

TClonesArray * fOriginalHitArray
 
TClonesArray * fOverlapHitArray
 
Int_t fVerbose
 

Detailed Description

Definition at line 10 of file PndSttSignalOverlap.h.

Constructor & Destructor Documentation

PndSttSignalOverlap::PndSttSignalOverlap ( )

Default constructor

Definition at line 27 of file PndSttSignalOverlap.cxx.

References fVerbose.

27  {
28  fVerbose = 0;
29  fOriginalHitArray = NULL;
30 }
TClonesArray * fOriginalHitArray
PndSttSignalOverlap::PndSttSignalOverlap ( TClonesArray *  OriginalHitArray)

Definition at line 32 of file PndSttSignalOverlap.cxx.

References fVerbose.

32  {
33  fVerbose = 0;
34  fOriginalHitArray = OriginalHitArray;
35 }
TClonesArray * fOriginalHitArray
PndSttSignalOverlap::PndSttSignalOverlap ( Int_t  verbose,
TClonesArray *  OriginalHitArray 
)

Definition at line 38 of file PndSttSignalOverlap.cxx.

References fVerbose.

38  { // verbose //[R.K.03/2017] unused variable(s)
39  fVerbose = 0;
40  fOriginalHitArray = OriginalHitArray;
41 }
TClonesArray * fOriginalHitArray
PndSttSignalOverlap::~PndSttSignalOverlap ( )

Destructor

Definition at line 46 of file PndSttSignalOverlap.cxx.

46  {
47  delete fOriginalHitArray;
48 }
TClonesArray * fOriginalHitArray

Member Function Documentation

PndSttSignalOverlap::ClassDef ( PndSttSignalOverlap  ,
 
)
private
Bool_t PndSttSignalOverlap::OverlapSimultaneousSignals ( TClonesArray *  OverlapHitArray)

Definition at line 51 of file PndSttSignalOverlap.cxx.

References Bool_t, PndSttHit::GetIsochrone(), PndSttHit::GetTubeID(), hit, and nhits.

Referenced by PndSttHitProducerRealFast::Exec().

51  {
52 
53  if(fOriginalHitArray == NULL) return kFALSE;
54  if(OverlapHitArray == NULL) return kFALSE;
55  fOverlapHitArray = OverlapHitArray;
56  fOverlapHitArray->Clear();
57 
58  // vector of the firing tubes
59  std::vector<int> firingtubes;
60  std::vector<int>::iterator it;
61 
62  // maps tubeID to hitID (the hitID of the chosen signal)
63  std::map<int, int> maptubetohit;
64 
65  Int_t nhits = fOriginalHitArray->GetEntriesFast();
66 
67  for(int ihit = 0; ihit < nhits; ihit++) {
68  PndSttHit *hit = (PndSttHit *) fOriginalHitArray->At(ihit);
69  if(!hit) continue;
70 
71  // get which tube it is
72  Int_t tubeid = hit->GetTubeID();
73 
74  // has the tube already fired?
75  it = find(firingtubes.begin(), firingtubes.end(), tubeid);
76 
77  // if not, add it to the firing tubes and map
78  if(it == firingtubes.end()) {
79  firingtubes.push_back(tubeid);
80  maptubetohit[tubeid] = ihit; // CHECK
81  }
82  else {
83  // geet the old hit
84  int oldhitid = maptubetohit[tubeid]; // CHECK
85  PndSttHit *oldhit = (PndSttHit *) fOriginalHitArray->At(oldhitid);
86  if(!oldhit) continue;
87  double thisiso = hit->GetIsochrone();
88  double oldiso = oldhit->GetIsochrone();
89 
90  // this this hit comes first, replace it in map
91  if(thisiso < oldiso) {
92  maptubetohit[tubeid] = ihit; // CHECK
93  }
94  // else do nothing
95  }
96  }
97 
98  // copy to output only the hits in the map
99  for(size_t itube = 0; itube < firingtubes.size(); itube++) {
100  int tubeid = firingtubes[itube];
101  int hitid = maptubetohit[tubeid];
102  Bool_t wrote = WriteToOutputHit(hitid);
103  if(wrote == kFALSE) cout << "error in writing hit " << hitid << endl;
104  }
105 
106  return kTRUE;
107 }
Bool_t WriteToOutputHit(Int_t hitid)
Double_t GetIsochrone() const
Definition: PndSttHit.h:62
Int_t GetTubeID() const
Definition: PndSttHit.h:75
TClonesArray * fOriginalHitArray
PndSdsMCPoint * hit
Definition: anasim.C:70
TClonesArray * fOverlapHitArray
Bool_t PndSttSignalOverlap::WriteToOutputHit ( Int_t  hitid)

Definition at line 109 of file PndSttSignalOverlap.cxx.

References hit.

109  {
110  PndSttHit *hit = (PndSttHit *) fOriginalHitArray->At(hitid);
111  if(!hit) return kFALSE;
112  TClonesArray& clref = *fOverlapHitArray;
113  Int_t size = clref.GetEntriesFast();
114  PndSttHit *hitnew = new(clref[size]) PndSttHit();
115  *hitnew = *hit;
116  hitnew->SetDetectorID(hit->GetDetectorID());
117 
118 
119  return kTRUE;
120 }
TClonesArray * fOriginalHitArray
PndSdsMCPoint * hit
Definition: anasim.C:70
TClonesArray * fOverlapHitArray

Member Data Documentation

TClonesArray* PndSttSignalOverlap::fOriginalHitArray
private

Definition at line 29 of file PndSttSignalOverlap.h.

TClonesArray* PndSttSignalOverlap::fOverlapHitArray
private

Definition at line 30 of file PndSttSignalOverlap.h.

Int_t PndSttSignalOverlap::fVerbose
private

Definition at line 31 of file PndSttSignalOverlap.h.


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