All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
RealisticCaloReco.h
Go to the documentation of this file.
1 #ifndef DIGITIZER_REALISTICCALORECO_H
2 #define DIGITIZER_REALISTICCALORECO_H 1
3 
4 #include "marlin/Processor.h"
5 #include "lcio.h"
6 
7 #include <EVENT/CalorimeterHit.h>
8 #include <IMPL/CalorimeterHitImpl.h>
9 
10 #include <UTIL/CellIDDecoder.h>
11 
12 #include <IMPL/LCFlagImpl.h>
13 
14 #include "CalorimeterHitType.h"
15 
16 #include <string>
17 #include <vector>
18 
19 using namespace lcio ;
20 using namespace marlin ;
21 
22 /**
23 \addtogroup CaloDigi CaloDigi
24 @{
25 
26 \addtogroup RealisticCaloReco RealisticCaloReco
27 @{
28 Realistic reconstruction of calorimeter hits.
29 === RealisticCaloReco Processor === <br>
30  realistic reconstruction of calorimeter hits
31  e.g. apply sampling fraction correction
32  virtual class, technology indenpendent
33  D.Jeans 02/2016.
34 
35  24 March 2016: removed gap corrections - to be put into separate processor
36  changed relations: now keep relation between reconstructed and simulated hits.
37 */
38 
39 
40 class RealisticCaloReco : virtual public Processor {
41 
42  public:
44  RealisticCaloReco ( const RealisticCaloReco& ) = delete;
45  RealisticCaloReco& operator=(const RealisticCaloReco&) = delete;
46 
47  virtual void init() ;
48  virtual void processRunHeader( LCRunHeader* run ) ;
49  virtual void processEvent( LCEvent * evt ) ;
50  virtual void check( LCEvent * evt ) ;
51  virtual void end() ;
52 
53 
54  protected:
55 
56  float getLayerCalib( int ilayer );
57  virtual float reconstructEnergy(const CalorimeterHit* hit)=0; // to be overloaded, technology-specific
58 
59  // parameters
60  std::vector <std::string> _inputHitCollections{};
61  std::vector <std::string> _inputRelCollections{};
62  std::vector <std::string> _outputHitCollections{};
63  std::vector <std::string> _outputRelCollections{};
64  std::vector <float> _calibrCoeff{};
65  std::vector <int> _calLayers{};
66 
67  std::string _cellIDLayerString{};
68 
69  // internal variables
70  LCFlagImpl _flag{};
71  LCFlagImpl _flag_rel{};
72 
73  CellIDDecoder<CalorimeterHit> * _idDecoder{};
74 
75 } ;
76 
77 /** @} @}*/
78 
79 #endif