MarlinTrk  02.08
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MarlinTrkDiagnostics.cc
Go to the documentation of this file.
1 
3 
4 #include "EVENT/LCObject.h"
5 #include "UTIL/BitSet32.h"
6 #include "UTIL/LCTrackerConf.h"
7 
8 #ifdef MARLINTRK_DIAGNOSTICS_ON
9 
10 namespace MarlinTrk{
11 
12 
13  void getMCParticlesForTrackerHit(EVENT::TrackerHit* trkhit, std::vector<EVENT::MCParticle*>& mcps){
14 
15  if ( !trkhit ) {
16  return;
17  }
18 
19  // make sure there is nothing in the vector we wish to return
20  mcps.clear();
21 
22  // first check if this is a composite space point
24 
25  const EVENT::LCObjectVec rawObjects = trkhit->getRawHits();
26 
27  for (unsigned iraw = 0; iraw < rawObjects.size(); ++iraw) {
28 
29  EVENT::TrackerHit* rawHit = dynamic_cast< EVENT::TrackerHit* >( rawObjects[iraw] );
30 
31  if( rawHit && rawHit->ext<MarlinTrk::MCTruth4HitExt>()){
32 
33  EVENT::MCParticle* mcp = rawHit->ext<MarlinTrk::MCTruth4HitExt>()->simhit->getMCParticle();
34  bool found = false;
35  // check that it is not already in the vector
36  for (unsigned imcp=0; imcp<mcps.size(); ++imcp) {
37  if (mcp == mcps[imcp]) {
38  found = true;
39  break;
40  }
41  }
42 
43  if( found == false ) mcps.push_back(mcp);
44 
45  }
46 
47 
48  } // end of loop over rawObjects
49 
50  // end if COMPOSITE_SPACEPOINT
51  } else {
52 
53 
54  if( trkhit->ext<MarlinTrk::MCTruth4HitExt>()){
55  mcps.push_back(trkhit->ext<MarlinTrk::MCTruth4HitExt>()->simhit->getMCParticle());
56  }
57 
58 
59  }
60  }
61 }
62 
63 #endif
virtual int getType() const =0
T push_back(T...args)
T clear(T...args)
T size(T...args)
STL class.
static const int COMPOSITE_SPACEPOINT
virtual const LCObjectVec & getRawHits() const =0