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 ;
129 virtual void init() ;
133 virtual void processRunHeader( LCRunHeader* run ) ;
137 virtual void processEvent( LCEvent * evt ) ;
140 virtual void check( LCEvent * evt ) ;
147 void writeVoxelToHit(
Voxel_tpc* aVoxel) ;
148 void writeMergedVoxelsToHit( std::vector <Voxel_tpc*>* hitList ) ;
149 void plotHelixHitResidual(MCParticle *mcp, CLHEP::Hep3Vector *thisPointRPhi);
150 double getPadPhi( CLHEP::Hep3Vector* thisPointRPhi, CLHEP::Hep3Vector* firstPointRPhi, CLHEP::Hep3Vector* middlePointRPhi, CLHEP::Hep3Vector* lastPointRPhi);
151 double getPadTheta( CLHEP::Hep3Vector* firstPointRPhi, CLHEP::Hep3Vector* middlePointRPhi, CLHEP::Hep3Vector* lastPointRPhi );
158 std::string _spacePointColName ;
159 std::string _lowPtHitscolName ;
165 std::string _outRelColName ;
167 bool _use_raw_hits_to_store_simhit_pointer;
175 EVENT::MCParticle* _mcp;
176 EVENT::MCParticle* _previousMCP;
177 EVENT::MCParticle* _nextMCP;
178 EVENT::MCParticle* _nMinus2MCP;
179 EVENT::MCParticle* _nPlus2MCP;
181 SimTrackerHit* _SimTHit;
182 SimTrackerHit* _previousSimTHit;
183 SimTrackerHit* _nextSimTHit;
184 SimTrackerHit* _nPlus2SimHit;
185 SimTrackerHit* _nMinus2SimHit;
190 bool _dontEncodeSide ;
192 float _pointResoRPhi0;
193 float _pointResoPadPhi;
203 float _doubleHitResZ;
204 float _doubleHitResRPhi;
209 std::vector< std::vector <Voxel_tpc *> > _tpcRowHits;
210 std::map< Voxel_tpc *,SimTrackerHit *> _tpcHitMap;
211 std::vector<float> _length;
214 LCCollectionVec* _trkhitVec;
215 LCCollectionVec* _relCol;
216 CellIDEncoder<TrackerHitImpl>* _cellid_encoder ;
219 int _NBackgroundSimTPCHits;
220 int _NPhysicsSimTPCHits;
221 int _NPhysicsAbove02GeVSimTPCHits;
222 int _NPhysicsAbove1GeVSimTPCHits;
225 int _NLostPhysicsTPCHits;
226 int _NLostPhysicsAbove02GeVPtTPCHits;
227 int _NLostPhysicsAbove1GeVPtTPCHits;
232 IAnalysisFactory * _AF;
235 IHistogramFactory * _HF;
236 IHistogram1D * _phiDiffHisto;
237 IHistogram1D * _thetaDiffHisto;
238 IHistogram1D * _phiRelHisto;
239 IHistogram1D * _thetaRelHisto;
241 IHistogram1D * _phiDistHisto;
242 IHistogram1D * _rPhiPullHisto;
243 IHistogram1D * _rPhiDiffHisto;
244 IHistogram1D * _zDiffHisto;
245 IHistogram1D * _zPullHisto;
246 IHistogram2D * _zSigmaVsZHisto;
247 IHistogram1D * _zSigmaHisto;
248 IHistogram1D * _rPhiSigmaHisto;
249 IHistogram1D * _radiusCheckHisto;
250 IHistogram1D * _ResidualsRPhiHisto;
252 IHistogram1D * _NSimTPCHitsHisto;
253 IHistogram1D * _NBackgroundSimTPCHitsHisto;
254 IHistogram1D * _NPhysicsSimTPCHitsHisto;
255 IHistogram1D * _NPhysicsAbove02GeVSimTPCHitsHisto;
256 IHistogram1D * _NPhysicsAbove1GeVSimTPCHitsHisto;
257 IHistogram1D * _NRecTPCHitsHisto;
259 IHistogram1D * _NLostPhysicsTPCHitsHisto;
260 IHistogram1D * _NLostPhysicsAbove02GeVPtTPCHitsHisto;
261 IHistogram1D * _NLostPhysicsAbove1GeVPtTPCHitsHisto;
262 IHistogram1D * _NRevomedHitsHisto;
264 IHistogram1D * _NKeptPhysicsTPCHitsHistoPercent;
265 IHistogram1D * _NKeptPhysicsAbove02GeVPtTPCHitsHistoPercent;
266 IHistogram1D * _NKeptPhysicsAbove1GeVPtTPCHitsHistoPercent;
std::string _padRowHitColName
Input collection name.
Definition: TPCDigiProcessor.h:157
std::string _TPCTrackerHitsCol
Output collection name.
Definition: TPCDigiProcessor.h:164
====== TPCDigiProcessor ======
Definition: TPCDigiProcessor.h:117