MarlinTPC  1.2.0
ChargeDistributionProcessor.h
1 #ifndef ChargeDistributionProcessor_h
2 #define ChargeDistributionProcessor_h 1
3 
4 #include "VoxelTPC.h"
5 
6 //LCIO
7 #include "lcio.h"
8 
9 //MARLIN
10 #include "marlin/Processor.h"
11 
12 //C++
13 #include <string>
14 
15 namespace marlintpc{
16 
17 
18 
19 
20 /* The following comment is tranfered to doxygen documentation
21  * which begins with a second asterix, or in case of on line comment an extra third slash
22  */
23 
76 class ChargeDistributionProcessor : public marlin::Processor {
77 
78  public:
79 
80  virtual Processor* newProcessor() { return new ChargeDistributionProcessor ; }
81 
82 
84  virtual ~ChargeDistributionProcessor(){}
85 
89  virtual void init() ;
90 
93  virtual void processRunHeader(lcio::LCRunHeader* run ) ;
94 
97  virtual void processEvent(lcio::LCEvent * evt ) ;
98 
99 
105  static std::list< std::pair< VoxelTPC::VoxelIndex, int > > * fetchVoxelList();
106 
107 protected:
108 
111  std::string _inputCollectionName;
115  std::string _gas;
116 
117  float _ETrans1;
118  float _ETrans2;
119  float _EInd;
120  bool _outputIsPersistent;
121  double _sigma;
122  double _sigmaLong;
123  float _BField;
125  double _zBinLength;
126 
128 
129  const gear::TPCParameters* _tpcParameters;
130 
131  marlintpc::VoxelTPC* _trackerData;
132 
133  //For internal bookkeepin
135 
137 
141  static std::list< std::pair< VoxelTPC::VoxelIndex, int > >* _fetchedList;
142 
144  double _sigmaOverride;
145  double _BOverride;
146 
149  };
150 
151 }//end of namespace marlintpc
152 
153 #endif
static std::list< std::pair< VoxelTPC::VoxelIndex, int > > * fetchVoxelList()
A function to directly get the voxels from the internal map.
Definition: ChargeDistributionProcessor.cc:454
virtual void processRunHeader(lcio::LCRunHeader *run)
Called for every run.
Definition: ChargeDistributionProcessor.cc:236
virtual void processEvent(lcio::LCEvent *evt)
Called for every event - the working horse.
Definition: ChargeDistributionProcessor.cc:252
float _EInd
Induction field.
Definition: ChargeDistributionProcessor.h:119
This processor takes the coordinates of the drifted electrons and the charge from amplification and s...
Definition: ChargeDistributionProcessor.h:76
double _inductionFactor
Size of induction on neighbour pads in percent of charge on central pad.
Definition: ChargeDistributionProcessor.h:148
bool _improveMemoryFootprint
Flag whether to use the memory saving shotcut.
Definition: ChargeDistributionProcessor.h:143
double _zBinLength
Length of a z-bin in ns.
Definition: ChargeDistributionProcessor.h:125
The VoxelTPC is a helper class containing a std::map of all TPCVoxels which contain charge...
Definition: VoxelTPC.h:42
double _bunchIntervall
Time between two bunch crossings in ns.
Definition: ChargeDistributionProcessor.h:124
double _sigma
If true the output collection is written.
Definition: ChargeDistributionProcessor.h:121
float _ETrans1
First transfer field.
Definition: ChargeDistributionProcessor.h:117
float _BField
Strength of the magnetic field in T.
Definition: ChargeDistributionProcessor.h:123
double _sigmaOverride
Optional override parameter for the charge broadening.
Definition: ChargeDistributionProcessor.h:144
float _ETrans2
Second transfer field.
Definition: ChargeDistributionProcessor.h:118
static std::list< std::pair< VoxelTPC::VoxelIndex, int > > * _fetchedList
A subset of voxels which has been removed (fetched) from the VoxelTPC.
Definition: ChargeDistributionProcessor.h:141
virtual void init()
Called at the begin of the job before anything is read.
Definition: ChargeDistributionProcessor.cc:153
bool _isFirstEvent
Test if this is the first event to be processed at all.
Definition: ChargeDistributionProcessor.h:134
double _ionisationEnergy
Ionisation energy of the gas.
Definition: ChargeDistributionProcessor.h:136
int _writeAfterNEvents
Number of overlayed events after which the TPC is read out.
Definition: ChargeDistributionProcessor.h:127
std::string _altTPCConditionsName
Name of the newly created TPCConditonsCollection if the original one is not writeable.
Definition: ChargeDistributionProcessor.h:114
double _BOverride
Optional override parameter for the magnetic field.
Definition: ChargeDistributionProcessor.h:145
std::string _inputCollectionName
Input/output collection names.
Definition: ChargeDistributionProcessor.h:111
double _sigmaLong
Value of the longitudinal defocussing.
Definition: ChargeDistributionProcessor.h:122
std::string _outputCollectionName
Name of the output collection.
Definition: ChargeDistributionProcessor.h:112
std::string _tpcConditionsColName
Name of collection containing the TPCConditions.
Definition: ChargeDistributionProcessor.h:113
std::string _gas
Name of the gas mixture.
Definition: ChargeDistributionProcessor.h:115