All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
EMShowerFinder.h
Go to the documentation of this file.
1 #ifndef EMShowerFinder_h
2 #define EMShowerFinder_h 1
3 
4 #include <iostream>
5 #include <vector>
6 #include <map>
7 
8 #include <marlin/Processor.h>
9 #include <lcio.h>
10 
11 #include <EVENT/LCCollection.h>
12 #include <IMPL/LCCollectionVec.h>
13 #include <IMPL/ClusterImpl.h>
14 
15 #include <EVENT/CalorimeterHit.h>
16 #include "UTIL/CellIDDecoder.h"
17 #include <LCRTRelations.h>
18 
19 
20 #include "ClusterShapes.h"
21 #include "KITutil.h"
22 #include "Phys_Geom_Database.h"
23 
24 
25 // MarlinCED is only used for debugging
26 #include <MarlinCED.h>
27 
28 
29 using namespace lcio ;
30 using namespace marlin ;
31 
32 /**
33 \addtogroup Clustering Clustering
34 @{
35 */
36 
37 typedef struct {
38 
39  CalorimeterHit* ECALHit{};
40  std::vector<PROTSEED2*> relatedCores{};
41  std::vector<double> probabilitiesForThisECALHit{};
42  std::vector<double> distancesToCoresForThisECALHit{};
43  std::vector<double> estimatedEnergyPerCore{};
44 
46 
47 
48 
49 // integer runtime extension which flags CalorimeterHits in EMShowers
50 struct isPartOfEMShowerCandidate : LCIntExtension<isPartOfEMShowerCandidate> {};
51 
52 
53 
54 /**
55 \addtogroup EMShowerFinder EMShowerFinder
56 @{
57 Initial version of a processor to find electro-magnetic showers.
58  * It is based on the KIT package and takes only ECAL hits into account.
59  * The output is a collection of clusters in which the electro-magnetic showers are stored. More docu will come soon.
60  * <br>
61  *
62  * @author O. Wendt (DESY)
63  * @version
64  *
65  */
66 class EMShowerFinder : public Processor {
67 
68  public:
69 
70  virtual Processor* newProcessor() { return new EMShowerFinder ; }
71 
72  EMShowerFinder() ;
73 
74  virtual void init() ;
75  virtual void processRunHeader( LCRunHeader* run ) ;
76  virtual void processEvent( LCEvent * evt ) ;
77  virtual void check( LCEvent * evt ) ;
78  virtual void end() ;
79 
80 
81  private:
82 
83 
84  protected:
85 
86  std::string _colNameECAL{};
87  std::string _collectionNameOfEMShowerCandidates{};
88  std::string _ToClean{};
89  int _CleanCut{};
90  int _N{};
91  vector<float> _miipstep{};
92  int _MinHit0{};
93  int _MinHitSplit{};
94  double _Rcut{};
95  double _Distcut{};
96  double _Coscut{};
97  double _energyDeviationCut{};
98  double _probabilityDensityCut{};
99 
100  int _debugLevel{};
101  int _drawOnCED{};
102 
103  int _nRun{};
104  int _nEvt{};
105 
106 } ;
107 
108 /** @} @} */
109 
110 #endif
virtual Processor * newProcessor()