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

#include <PndFtsSignalOverlap.h>

Inheritance diagram for PndFtsSignalOverlap:

Public Member Functions

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

Private Member Functions

 ClassDef (PndFtsSignalOverlap, 1)
 

Private Attributes

TClonesArray * fOriginalHitArray
 
TClonesArray * fOverlapHitArray
 
Int_t fVerbose
 

Detailed Description

Definition at line 10 of file PndFtsSignalOverlap.h.

Constructor & Destructor Documentation

PndFtsSignalOverlap::PndFtsSignalOverlap ( )

Default constructor

Definition at line 28 of file PndFtsSignalOverlap.cxx.

References fVerbose.

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

Definition at line 33 of file PndFtsSignalOverlap.cxx.

References fVerbose.

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

Definition at line 39 of file PndFtsSignalOverlap.cxx.

References fVerbose.

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

Destructor

Definition at line 47 of file PndFtsSignalOverlap.cxx.

47  {
48  delete fOriginalHitArray;
49 }
TClonesArray * fOriginalHitArray

Member Function Documentation

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

Definition at line 52 of file PndFtsSignalOverlap.cxx.

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

Referenced by PndFtsHitProducerRealFast::Exec().

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

Definition at line 110 of file PndFtsSignalOverlap.cxx.

References hit().

110  {
111  PndFtsHit *hit = (PndFtsHit *) fOriginalHitArray->At(hitid);
112  if(!hit) return kFALSE;
113  TClonesArray& clref = *fOverlapHitArray;
114  Int_t size = clref.GetEntriesFast();
115  PndFtsHit *hitnew = new(clref[size]) PndFtsHit();
116  *hitnew = *hit;
117  hitnew->SetDetectorID(hit->GetDetectorID());
118 
119 
120  return kTRUE;
121 }
TClonesArray * fOverlapHitArray
int hit(Int_t nEvents=0, TString inFile="sim.root", TString parFile="par.root", TString inDigi="digi.root", TString outFile="hit.root", Int_t timeBased=0)
Definition: hit.C:1
TClonesArray * fOriginalHitArray

Member Data Documentation

TClonesArray* PndFtsSignalOverlap::fOriginalHitArray
private

Definition at line 29 of file PndFtsSignalOverlap.h.

TClonesArray* PndFtsSignalOverlap::fOverlapHitArray
private

Definition at line 30 of file PndFtsSignalOverlap.h.

Int_t PndFtsSignalOverlap::fVerbose
private

Definition at line 31 of file PndFtsSignalOverlap.h.


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