BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Simulation/BOOST/MdcSim/include/MdcSim/BesMdcDigitizer.hh
Go to the documentation of this file.
1//---------------------------------------------------------------------------//
2// BOOST --- BESIII Object_Oriented Simulation Tool //
3//---------------------------------------------------------------------------//
4// Description:
5// Author: Yuan Ye(yuany@mail.ihep.ac.cn)
6// Created: Oct. 26, 2004
7// Modified:
8// Comment:
9//---------------------------------------------------------------------------//
10
11#ifndef BesMdcDigitizer_h
12#define BesMdcDigitizer_h 1
13
15class TFile;
16class TH1F;
17class G4Svc;
18#include "GaudiKernel/NTuple.h"
19
20#include "BesMdcCalTransfer.hh"
21#include "BesMdcDigi.hh"
22#include "BesMdcGeoParameter.hh"
23#include "G4Svc/IG4Svc.h"
24#include "G4VDigitizerModule.hh"
25#include "MdcTunningSvc/IMdcTunningSvc.h"
26
27#include "globals.hh"
28#include <vector>
29
30class BesMdcDigitizer : public G4VDigitizerModule {
31public:
32 BesMdcDigitizer( G4String modName );
34
35 // necessary digi collection object must be constructed and set to
36 // G4DCofThisEvent by StoreDigiCollection protected method.
37 virtual void Digitize();
38 void SetNoiseFlag( G4int flag ) { noiseFlag = flag; }
39 void SetNoiseType( G4int type ) { noiseType = type; }
40 void SetNoiseLevel( G4double level ) { noiseLevel = level; }
41
42 void SetSmearFlag( G4int flag ) { smearFlag = flag; }
43 void SetMdcDRes( G4double res ) { mdcDRes = res; }
44
45 void SetEffFlag( G4int flag ) { effFlag = flag; }
46 void SetEff( G4int layer, G4double eff );
47
48private:
49 G4double Smear( G4double );
50 G4double Smear( G4double, G4double, G4double );
51 G4double Smear( G4double, G4double, G4double, G4double, G4double, G4double );
52 G4double Smear( G4double, G4double, G4double, G4double, G4double, G4double, G4double,
53 G4double, G4double ); // liukai 2012-6-4
54 void AddNoise( void );
55 void AddNoise2( void );
56
57private:
58 G4int noiseFlag; // 1: Add noise; 0: do nothing
59 G4int noiseType; // Noise level distribution mode. 0: N(r)=N0; 1: N(r)=N0*r0/r; 2:
60 // N(r)=N0*r0^2/r^2
61 G4double noiseLevel; // Noise level of first layer
62 G4double maxNoiseT; // Max drift time of Mdc, maybe change to layer dependence
63
64 G4int smearFlag; // 0: do nothing; 1: smear(double gauss); 2: smear(fix sigma) default is 1
65 G4double mdcDRes; // Space resolution of wire, default is 130um by now
66
67 G4int effFlag; // 0: from CalFunSvc; 1: from file
68 vector<G4double> layerEff;
69 vector<G4double> mixLevel;
70
71 G4int digiPointer[43][288]; // pointer to digisCollection
72 BesMdcDigisCollection* digisCollection;
73 BesMdcDigitizerMessenger* digitizerMessenger;
74 BesMdcGeoParameter* mdcGeoPointer;
75 BesMdcCalTransfer* mdcCalPointer;
76 IMdcTunningSvc* mdcTunningSvc;
77
78 TFile* f;
79 TH1F* h1;
80 TH1F* h2;
81 TH1F* h3;
82
83 IG4Svc* m_G4Svc;
84 NTuple::Tuple* m_tupleMdc;
85 NTuple::Item<long> m_NHits;
86 NTuple::Item<long> m_layerId;
87 NTuple::Item<long> m_cellId;
88 NTuple::Item<double> m_edep;
89 NTuple::Item<double> m_driftD;
90 // NTuple::Item<double> m_driftT;
91 NTuple::Item<double> m_globalT;
92 NTuple::Item<double> m_theta;
93 NTuple::Item<double> m_enterAngle;
94 NTuple::Item<double> m_driftDNew;
95 NTuple::Item<double> m_driftTNew;
96 // NTuple::Item<double> m_adc;
97 // NTuple::Item<double> m_tdc;
98};
99
100#endif
G4TDigiCollection< BesMdcDigi > BesMdcDigisCollection
BesMdcDigitizer(G4String modName)
virtual void Digitize()
void SetEff(G4int layer, G4double eff)
Definition G4Svc.h:31