00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef BesMdcDigitizer_h
00012 #define BesMdcDigitizer_h 1
00013
00014 class BesMdcDigitizerMessenger;
00015 class TFile;
00016 class TH1F;
00017 class G4Svc;
00018 #include "GaudiKernel/NTuple.h"
00019
00020 #include "G4VDigitizerModule.hh"
00021 #include "BesMdcDigi.hh"
00022 #include "BesMdcGeoParameter.hh"
00023 #include "BesMdcCalTransfer.hh"
00024 #include "MdcTunningSvc/IMdcTunningSvc.h"
00025 #include "MdcTunningSvc/MdcTunningSvc.h"
00026
00027 #include "globals.hh"
00028 #include <vector>
00029
00030 class BesMdcDigitizer : public G4VDigitizerModule
00031 {
00032 public:
00033 BesMdcDigitizer(G4String modName);
00034 ~BesMdcDigitizer();
00035
00036
00037
00038 virtual void Digitize();
00039 void SetNoiseFlag(G4int flag){noiseFlag=flag;}
00040 void SetNoiseType(G4int type){noiseType=type;}
00041 void SetNoiseLevel(G4double level){noiseLevel=level;}
00042
00043 void SetSmearFlag(G4int flag){smearFlag=flag;}
00044 void SetMdcDRes(G4double res){mdcDRes=res;}
00045
00046 void SetEffFlag(G4int flag){effFlag=flag;}
00047 void SetEff(G4int layer, G4double eff);
00048
00049
00050 private:
00051 G4double Smear(G4double);
00052 G4double Smear(G4double, G4double,G4double);
00053 G4double Smear(G4double, G4double,G4double,G4double,G4double,G4double);
00054 G4double Smear(G4double, G4double,G4double,G4double,G4double,G4double,G4double,G4double,G4double);
00055 void AddNoise(void);
00056 void AddNoise2(void);
00057 private:
00058 G4int noiseFlag;
00059 G4int noiseType;
00060 G4double noiseLevel;
00061 G4double maxNoiseT;
00062
00063 G4int smearFlag;
00064 G4double mdcDRes;
00065
00066 G4int effFlag;
00067 vector<G4double> layerEff;
00068 vector<G4double> mixLevel;
00069
00070 G4int digiPointer[43][288];
00071 BesMdcDigisCollection* digisCollection;
00072 BesMdcDigitizerMessenger* digitizerMessenger;
00073 BesMdcGeoParameter* mdcGeoPointer;
00074 BesMdcCalTransfer* mdcCalPointer;
00075 MdcTunningSvc* mdcTunningSvc;
00076
00077 TFile* f;
00078 TH1F* h1;
00079 TH1F* h2;
00080 TH1F* h3;
00081
00082 G4Svc* m_G4Svc;
00083 NTuple::Tuple* m_tupleMdc;
00084 NTuple::Item<long> m_NHits;
00085 NTuple::Item<long> m_layerId;
00086 NTuple::Item<long> m_cellId;
00087 NTuple::Item<double> m_edep;
00088 NTuple::Item<double> m_driftD;
00089
00090 NTuple::Item<double> m_globalT;
00091 NTuple::Item<double> m_theta;
00092 NTuple::Item<double> m_enterAngle;
00093 NTuple::Item<double> m_driftDNew;
00094 NTuple::Item<double> m_driftTNew;
00095
00096
00097 };
00098
00099 #endif
00100