19 #ifndef TPCDigiProcessor_h
20 #define TPCDigiProcessor_h 1
22 #include <marlin/Processor.h>
27 #include <gsl/gsl_rng.h>
29 #ifdef MARLIN_USE_AIDA
31 #include <marlin/AIDAProcessor.h>
32 #include <AIDA/IHistogramFactory.h>
33 #include <AIDA/ICloud1D.h>
44 #include <AIDA/AIDA.h>
52 #include <EVENT/LCCollection.h>
53 #include <IMPL/LCCollectionVec.h>
54 #include <EVENT/MCParticle.h>
55 #include <EVENT/SimTrackerHit.h>
56 #include <IMPL/TrackerHitImpl.h>
57 #include <UTIL/CellIDEncoder.h>
59 #include "CLHEP/Vector/TwoVector.h"
65 using namespace lcio ;
66 using namespace marlin ;
67 #ifdef MARLIN_USE_AIDA
68 using namespace AIDA ;
132 virtual void init() ;
136 virtual void processRunHeader( LCRunHeader* run ) ;
140 virtual void processEvent( LCEvent * evt ) ;
143 virtual void check( LCEvent * evt ) ;
150 void writeVoxelToHit(
Voxel_tpc* aVoxel) ;
151 void writeMergedVoxelsToHit( std::vector <Voxel_tpc*>* hitList ) ;
152 void plotHelixHitResidual(MCParticle *mcp, CLHEP::Hep3Vector *thisPointRPhi);
153 double getPadPhi( CLHEP::Hep3Vector* thisPointRPhi, CLHEP::Hep3Vector* firstPointRPhi, CLHEP::Hep3Vector* middlePointRPhi, CLHEP::Hep3Vector* lastPointRPhi);
154 double getPadTheta( CLHEP::Hep3Vector* firstPointRPhi, CLHEP::Hep3Vector* middlePointRPhi, CLHEP::Hep3Vector* lastPointRPhi );
160 std::string _padRowHitColName{};
161 std::string _spacePointColName{};
162 std::string _lowPtHitscolName{};
167 std::string _TPCTrackerHitsCol{};
168 std::string _outRelColName{};
170 bool _use_raw_hits_to_store_simhit_pointer{};
172 int _rejectCellID0{};
178 EVENT::MCParticle* _mcp{};
179 EVENT::MCParticle* _previousMCP{};
180 EVENT::MCParticle* _nextMCP{};
181 EVENT::MCParticle* _nMinus2MCP{};
182 EVENT::MCParticle* _nPlus2MCP{};
184 SimTrackerHit* _SimTHit{};
185 SimTrackerHit* _previousSimTHit{};
186 SimTrackerHit* _nextSimTHit{};
187 SimTrackerHit* _nPlus2SimHit{};
188 SimTrackerHit* _nMinus2SimHit{};
193 bool _dontEncodeSide{};
195 float _pointResoRPhi0{};
196 float _pointResoPadPhi{};
201 float _pointResoZ0{};
205 float _binningRPhi{};
206 float _doubleHitResZ{};
207 float _doubleHitResRPhi{};
212 std::vector< std::vector <Voxel_tpc *> > _tpcRowHits{};
213 std::map< Voxel_tpc *,SimTrackerHit *> _tpcHitMap{};
214 std::vector<float> _length{};
217 LCCollectionVec* _trkhitVec{};
218 LCCollectionVec* _relCol{};
219 CellIDEncoder<TrackerHitImpl>* _cellid_encoder{};
222 int _NBackgroundSimTPCHits{};
223 int _NPhysicsSimTPCHits{};
224 int _NPhysicsAbove02GeVSimTPCHits{};
225 int _NPhysicsAbove1GeVSimTPCHits{};
228 int _NLostPhysicsTPCHits{};
229 int _NLostPhysicsAbove02GeVPtTPCHits{};
230 int _NLostPhysicsAbove1GeVPtTPCHits{};
235 IAnalysisFactory * _AF{};
236 ITreeFactory * _TRF{};
238 IHistogramFactory * _HF{};
239 IHistogram1D * _phiDiffHisto{};
240 IHistogram1D * _thetaDiffHisto{};
241 IHistogram1D * _phiRelHisto{};
242 IHistogram1D * _thetaRelHisto{};
244 IHistogram1D * _phiDistHisto{};
245 IHistogram1D * _rPhiPullHisto{};
246 IHistogram1D * _rPhiDiffHisto{};
247 IHistogram1D * _zDiffHisto{};
248 IHistogram1D * _zPullHisto{};
249 IHistogram2D * _zSigmaVsZHisto{};
250 IHistogram1D * _zSigmaHisto{};
251 IHistogram1D * _rPhiSigmaHisto{};
252 IHistogram1D * _radiusCheckHisto{};
253 IHistogram1D * _ResidualsRPhiHisto{};
255 IHistogram1D * _NSimTPCHitsHisto{};
256 IHistogram1D * _NBackgroundSimTPCHitsHisto{};
257 IHistogram1D * _NPhysicsSimTPCHitsHisto{};
258 IHistogram1D * _NPhysicsAbove02GeVSimTPCHitsHisto{};
259 IHistogram1D * _NPhysicsAbove1GeVSimTPCHitsHisto{};
260 IHistogram1D * _NRecTPCHitsHisto{};
262 IHistogram1D * _NLostPhysicsTPCHitsHisto{};
263 IHistogram1D * _NLostPhysicsAbove02GeVPtTPCHitsHisto{};
264 IHistogram1D * _NLostPhysicsAbove1GeVPtTPCHitsHisto{};
265 IHistogram1D * _NRevomedHitsHisto{};
267 IHistogram1D * _NKeptPhysicsTPCHitsHistoPercent{};
268 IHistogram1D * _NKeptPhysicsAbove02GeVPtTPCHitsHistoPercent{};
269 IHistogram1D * _NKeptPhysicsAbove1GeVPtTPCHitsHistoPercent{};
====== TPCDigiProcessor ======
Definition: TPCDigiProcessor.h:117