BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
BesTofDigitizerV.cc
Go to the documentation of this file.
1//---------------------------------------------------------------------------//
2// BOOST --- BESIII Object_Oriented Simulation Tool //
3//---------------------------------------------------------------------------//
4// Description:
5// Author: Dengzy
6// Created: Mar, 2004
7// Modified:
8// Comment:
9//---------------------------------------------------------------------------//
10//$Id: BesTofDigitizerV.cc
11
12#include "GaudiKernel/Bootstrap.h"
13#include "GaudiKernel/ISvcLocator.h"
14#include "GaudiKernel/MsgStream.h"
15
16#include "G4DigiManager.hh"
17#include "Randomize.hh"
18#include "TofSim/BesTofDigi.hh"
19#include "TofSim/BesTofDigitizerV.hh"
20#include "TofSim/BesTofGeoParameter.hh"
21#include "TofSim/BesTofHit.hh"
22
24
25NTuple::Tuple* BesTofDigitizerV::m_tupleTof1 = 0;
26NTuple::Item<double> BesTofDigitizerV::m_partId;
27NTuple::Item<double> BesTofDigitizerV::m_scinNb;
28NTuple::Item<double> BesTofDigitizerV::m_edep;
29NTuple::Item<double> BesTofDigitizerV::m_nHits;
30NTuple::Item<double> BesTofDigitizerV::m_time1st0;
31NTuple::Item<double> BesTofDigitizerV::m_time1st1;
32NTuple::Item<double> BesTofDigitizerV::m_timelast0;
33NTuple::Item<double> BesTofDigitizerV::m_timelast1;
34NTuple::Item<double> BesTofDigitizerV::m_totalPhot0;
35NTuple::Item<double> BesTofDigitizerV::m_totalPhot1;
36NTuple::Item<double> BesTofDigitizerV::m_NphAllSteps;
37NTuple::Item<double> BesTofDigitizerV::m_max0;
38NTuple::Item<double> BesTofDigitizerV::m_max1;
39NTuple::Item<double> BesTofDigitizerV::m_tdc0;
40NTuple::Item<double> BesTofDigitizerV::m_adc0;
41NTuple::Item<double> BesTofDigitizerV::m_tdc1;
42NTuple::Item<double> BesTofDigitizerV::m_adc1;
43
44NTuple::Tuple* BesTofDigitizerV::m_tupleTof2 = 0;
45NTuple::Item<double> BesTofDigitizerV::m_eTotal;
46NTuple::Item<double> BesTofDigitizerV::m_nDigi;
47NTuple::Item<double> BesTofDigitizerV::m_partIdMPV;
48NTuple::Item<double> BesTofDigitizerV::m_scinNbMPV;
49NTuple::Item<double> BesTofDigitizerV::m_edepMPV;
50NTuple::Item<double> BesTofDigitizerV::m_nDigiOut;
51
52NTuple::Tuple* BesTofDigitizerV::m_tupleTof3 = 0;
53NTuple::Item<double> BesTofDigitizerV::m_forb;
54NTuple::Item<double> BesTofDigitizerV::m_timeFlight;
55NTuple::Item<double> BesTofDigitizerV::m_ddT;
56NTuple::Item<double> BesTofDigitizerV::m_scinSwim;
57NTuple::Item<double> BesTofDigitizerV::m_scinTime;
58NTuple::Item<double> BesTofDigitizerV::m_transitTime;
59NTuple::Item<double> BesTofDigitizerV::m_endTime;
60
61NTuple::Item<double> BesTofDigitizerV::m_edepHit;
62
63// NTuple::Tuple* BesTofDigitizerV::m_tupleTof4 = 0;//Write out the basic information for the
64// Mrpc Digitizer NTuple::Item<double> BesTofDigitizerV::m_partIdmrpc; NTuple::Item<double>
65// BesTofDigitizerV::m_stripidentifier; NTuple::Item<double> BesTofDigitizerV::m_trackindex;
66// NTuple::Item<double> BesTofDigitizerV::m_signal_pc;
67// NTuple::Item<double> BesTofDigitizerV::m_time_threshold;
68// NTuple::Item<double> BesTofDigitizerV::m_time_1sthit;
69// NTuple::Item<double> BesTofDigitizerV::m_time_1;
70// NTuple::Item<double> BesTofDigitizerV::m_time_2;
71// NTuple::Item<double> BesTofDigitizerV::m_firedstrip;
72// NTuple::Item<double> BesTofDigitizerV::m_numberions;
73
75
77
79 for ( G4int i = 0; i < 2; i++ )
80 {
81 m_ADC[i] = -999;
82 m_TDC[i] = -999;
83 }
84 m_trackIndex = -999;
85 m_globalTime = 9999;
86
87 IMessageSvc* msgSvc;
88 Gaudi::svcLocator()->service( "MessageSvc", msgSvc );
89 MsgStream log( msgSvc, "BesTofDigitizerBrV1" );
90
91 ISvcLocator* svcLocator = Gaudi::svcLocator();
92 // StatusCode scc = svcLocator->service("TofCaliSvc", m_tofCaliSvc);
93 // if (scc == StatusCode::SUCCESS) {
94 // log << MSG::INFO << "TofSim Gets TofCaliSvc Service Sucessfully!! " << endmsg;
95 // }
96 // else {
97 // log << MSG::ERROR << "TofSim Gets TofCaliSvc Service Failed !! " << endmsg;
98 // }
99
100 StatusCode sim_scc = svcLocator->service( "TofSimSvc", m_tofSimSvc );
101 if ( sim_scc == StatusCode::SUCCESS )
102 { log << MSG::DEBUG << "TofSim Gets TofSimSvc Service Sucessfully!! " << endmsg; }
103 else { log << MSG::ERROR << "TofSim Gets TofSimSvc Service Failed !! " << endmsg; }
104
105 StatusCode qelec_scc = svcLocator->service( "TofQElecSvc", m_tofQElecSvc );
106 if ( qelec_scc == StatusCode::SUCCESS )
107 { log << MSG::DEBUG << "TofRec Gets tofQElecSvc Sucessfully!! " << endmsg; }
108 else { log << MSG::ERROR << "TofRec Gets tofQElecSvc Failed !! " << endmsg; }
109
110 // retrieve G4Svc
111 IG4Svc* tmpSvc;
112 StatusCode sc = svcLocator->service( "G4Svc", tmpSvc );
113 // m_G4Svc = dynamic_cast<G4Svc *>(tmpSvc);
114 m_G4Svc = tmpSvc;
115
116 // get Tof Ntuple from G4Svc
117 if ( m_G4Svc->TofRootFlag() && ( !m_booked ) )
118 {
119
120 m_tupleTof1 = m_G4Svc->GetTupleTof1();
121
122 sc = m_tupleTof1->addItem( "partId", m_partId );
123 sc = m_tupleTof1->addItem( "scinNb", m_scinNb );
124 sc = m_tupleTof1->addItem( "edep", m_edep );
125 sc = m_tupleTof1->addItem( "nHits", m_nHits );
126 sc = m_tupleTof1->addItem( "time1st0", m_time1st0 );
127 sc = m_tupleTof1->addItem( "time1st1", m_time1st1 );
128 sc = m_tupleTof1->addItem( "timelast0", m_timelast0 );
129 sc = m_tupleTof1->addItem( "timelast1", m_timelast1 );
130 sc = m_tupleTof1->addItem( "totalPhot0", m_totalPhot0 );
131 sc = m_tupleTof1->addItem( "totalPhot1", m_totalPhot1 );
132 sc = m_tupleTof1->addItem( "NphAllSteps", m_NphAllSteps );
133 sc = m_tupleTof1->addItem( "max0", m_max0 );
134 sc = m_tupleTof1->addItem( "max1", m_max1 );
135 sc = m_tupleTof1->addItem( "tdc0", m_tdc0 );
136 sc = m_tupleTof1->addItem( "adc0", m_adc0 );
137 sc = m_tupleTof1->addItem( "tdc1", m_tdc1 );
138 sc = m_tupleTof1->addItem( "adc1", m_adc1 );
139
140 m_tupleTof2 = m_G4Svc->GetTupleTof2();
141 sc = m_tupleTof2->addItem( "eTotal", m_eTotal );
142 sc = m_tupleTof2->addItem( "nDigi", m_nDigi );
143 sc = m_tupleTof2->addItem( "partIdMPV", m_partIdMPV );
144 sc = m_tupleTof2->addItem( "scinNbMPV", m_scinNbMPV );
145 sc = m_tupleTof2->addItem( "edepMPV", m_edepMPV );
146 sc = m_tupleTof2->addItem( "nDigiOut", m_nDigiOut );
147 sc = m_tupleTof2->addItem( "edepPerHit", m_edepHit );
148
149 m_tupleTof3 = m_G4Svc->GetTupleTof3();
150 // sc = m_tupleTof3->addItem("forb",m_forb);
151 sc = m_tupleTof3->addItem( "timeFlight", m_timeFlight );
152 sc = m_tupleTof3->addItem( "ddT", m_ddT );
153 sc = m_tupleTof3->addItem( "scinSwim", m_scinSwim );
154 sc = m_tupleTof3->addItem( "scinTime", m_scinTime );
155 sc = m_tupleTof3->addItem( "transitTime", m_transitTime );
156 sc = m_tupleTof3->addItem( "endTime", m_endTime );
157
158 // m_tupleTof4 = m_G4Svc->GetTupleTof4();
159 // sc = m_tupleTof4->addItem("partID",m_partIdmrpc);
160 // sc = m_tupleTof4->addItem("stripidentifier",m_stripidentifier);
161 // sc = m_tupleTof4->addItem("trackindex",m_trackindex);
162 // sc = m_tupleTof4->addItem("signal_pc",m_signal_pc);
163 // sc = m_tupleTof4->addItem("time_threshold",m_time_threshold);
164 // sc = m_tupleTof4->addItem("time_1sthit",m_time_1sthit);
165 // sc = m_tupleTof4->addItem("time_1",m_time_1);
166 // sc = m_tupleTof4->addItem("time_2",m_time_2);
167 // sc = m_tupleTof4->addItem("firedstrip",m_firedstrip);
168 // sc = m_tupleTof4->addItem("numberions",m_numberions);
169
170 m_booked = true;
171 }
172}
IMessageSvc * msgSvc()