BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Simulation/BOOST/MdcSim/include/MdcSim/BesMdcSD.hh
Go to the documentation of this file.
1//---------------------------------------------------------------------------//
2// BOOST --- BESIII Object_Oriented Simulation Tool //
3//---------------------------------------------------------------------------
4// Description: Sensitive detector definition for axial layers of MDC
5// Author: Yuan Ye(yuany@mail.ihep.ac.cn)
6// Created: 4 Dec, 2003
7// Modified:
8// Comment: Used in "BesMdc"
9//---------------------------------------------------------------------------//
10
11#ifndef BesMdcSD_h
12#define BesMdcSD_h 1
13class TFile;
14class TH1F;
15class G4Svc;
16
17// #include "G4VSensitiveDetector.hh"
18#include "BesMdcCalTransfer.hh"
19#include "BesMdcGeoParameter.hh"
20#include "BesMdcHit.hh"
21#include "DedxCurSvc/IDedxCurSvc.h"
22#include "DedxSimSvc/IDedxSimSvc.h"
23#include "G4Svc/IG4Svc.h"
24#include "MdcGeomSvc/IMdcGeomSvc.h"
25#include "TruSim/BesSensitiveDetector.hh"
26
27#include "GaudiKernel/IDataProviderSvc.h"
28#include "GaudiKernel/NTuple.h"
29#include "TF1.h"
30
31#include <vector>
32
33class G4Step;
34class G4HCofThisEvent;
36
37class BesMdcSD : public BesSensitiveDetector {
38public:
39 BesMdcSD( G4String );
41
42 void Initialize( G4HCofThisEvent* );
43 G4bool ProcessHits( G4Step*, G4TouchableHistory* );
44 void EndOfEvent( G4HCofThisEvent* );
45
46 void BeginOfTruthEvent( const G4Event* );
47 void EndOfTruthEvent( const G4Event* );
48
49 G4double Distance( G4int, G4int, G4ThreeVector, G4ThreeVector, G4ThreeVector&, G4double& );
50
51 void dedxFuncInti( void );
52
53private:
54 G4int hitPointer[43][288], truthPointer[43][288];
55 BesMdcHitsCollection* hitsCollection;
56 BesMdcHitsCollection* truthCollection;
57 BesMdcGeoParameter* mdcGeoPointer;
58 BesMdcCalTransfer* mdcCalPointer;
59 IMdcGeomSvc* mdcGeomSvc;
60 IG4Svc* m_G4Svc;
61 TF1* dEdE_mylanfunc;
62
63 /// dedx sim ---------------------------
64 IDataProviderSvc* m_calibDataSvc;
65 IDedxSimSvc* m_pDedxSimSvc;
66 IDedxCurSvc* m_pDedxCurSvc;
67 std::vector<TH1F>* m_dedx_hists;
68 G4int m_version;
69 G4int m_numDedxHists;
70 G4int m_numBg;
71 G4int m_numTheta;
72 std::vector<double>* m_bgRange;
73 G4int GetBetagammaIndex( G4double bg );
74 G4int GetAngleIndex( G4double );
75 G4int GetChargeIndex( G4int );
76 G4double GetValDedxCurve( G4double bg, G4double charge );
77 G4double dedxSample( G4double betagamma, G4double length, G4double theta );
78
79 // dedx ntuple
80 NTuple::Tuple* m_tupleMdc;
81 NTuple::Item<double> m_betaGamma;
82 NTuple::Item<double> m_fitval;
83 NTuple::Item<double> m_random;
84 NTuple::Item<double> m_dedx;
85 NTuple::Item<double> m_de;
86 // NTuple::Item<double> m_length;
87 NTuple::Item<double> m_charge;
88 NTuple::Item<double> m_costheta;
89 ///------------------------------------
90};
91
92#endif
G4THitsCollection< BesMdcHit > BesMdcHitsCollection
void dedxFuncInti(void)
void BeginOfTruthEvent(const G4Event *)
void EndOfTruthEvent(const G4Event *)
G4double Distance(G4int, G4int, G4ThreeVector, G4ThreeVector, G4ThreeVector &, G4double &)
G4bool ProcessHits(G4Step *, G4TouchableHistory *)
void EndOfEvent(G4HCofThisEvent *)
BesMdcSD(G4String)
void Initialize(G4HCofThisEvent *)
Definition G4Svc.h:31