1 #ifndef REALISTICCALODIGI_H
2 #define REALISTICCALODIGI_H 1
4 #include "marlin/Processor.h"
5 #include <IMPL/LCFlagImpl.h>
6 #include <EVENT/SimCalorimeterHit.h>
13 using namespace lcio ;
14 using namespace marlin ;
43 virtual void processRunHeader( LCRunHeader* run ) ;
44 virtual void processEvent( LCEvent * evt ) ;
45 virtual void check( LCEvent * evt ) ;
51 enum { MIP, GEVDEP, NPE };
55 using integr_function = std::function<integr_res_opt(const EVENT::SimCalorimeterHit*)>;
57 virtual float EnergyDigi(
float energy,
int id0,
int id1);
58 virtual integr_res_opt Integrate(
const SimCalorimeterHit * hit )
const;
60 integr_res_opt StandardIntegration(
const SimCalorimeterHit * hit )
const ;
61 integr_res_opt ROCIntegration(
const SimCalorimeterHit * hit )
const ;
62 float SmearTime(
float time)
const;
65 virtual int getMyUnit()
const = 0 ;
66 virtual float digitiseDetectorEnergy(
float energy)
const = 0 ;
67 virtual float convertEnergy(
float energy,
int inScale )
const = 0;
71 std::vector<std::string> _inputCollections{};
72 std::vector<std::string> _outputCollections{};
73 std::vector<std::string> _outputRelCollections{};
78 std::string _integration_method{};
79 float _threshold_value{};
80 std::string _threshold_unit{};
83 int _time_correctForPropagation{};
84 float _time_windowMin{};
85 float _time_windowMax{};
92 float _misCalib_uncorrel{};
93 bool _misCalib_uncorrel_keep{};
95 float _misCalib_correl{};
97 float _deadCell_fraction{};
98 bool _deadCell_keep{};
100 float _elec_noiseMip{};
101 float _elec_rangeMip{};
103 std::string _cellIDLayerString{};
107 int _threshold_iunit{};
110 LCFlagImpl _flag_rel{};
112 float _event_correl_miscalib{};
114 std::map < std::pair <int, int> ,
float > _cell_miscalibs{};
115 std::map < std::pair <int, int> ,
bool > _cell_dead{};
std::optional< integr_res > integr_res_opt
std::function< integr_res_opt(const EVENT::SimCalorimeterHit *)> integr_function
std::pair< float, float > integr_res