BOSS 6.6.4.p01
BESIII Offline Software System
Loading...
Searching...
No Matches
BesRawDataWriter.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#include "BesMdcDigi.hh"
11#include "BesTofDigi.hh"
12#include "BesEmcDigi.hh"
13#include "BesMucDigi.hh"
14#include "BesRawDataWriter.hh"
15#include "G4DigiManager.hh"
16#include "G4Svc/IG4Svc.h"
17#include "G4Svc/G4Svc.h"
18
19
20
21#include "GaudiKernel/IDataProviderSvc.h"
22#include "GaudiKernel/ISvcLocator.h"
23#include "GaudiKernel/Bootstrap.h"
24#include "GaudiKernel/RegistryEntry.h"
25#include "GaudiKernel/MsgStream.h"
26
27#include "MdcRawEvent/MdcDigi.h"
28#include "TofRawEvent/TofDigi.h"
29#include "EmcRawEvent/EmcDigi.h"
30#include "MucRawEvent/MucDigi.h"
31
33#include "Identifier/MdcID.h"
34#include "Identifier/TofID.h"
35#include "Identifier/EmcID.h"
36#include "Identifier/MucID.h"
37
39#include "RawEvent/DigiEvent.h"
40#include "GaudiKernel/SmartDataPtr.h"
41
42
44{
45 m_DigiMan = G4DigiManager::GetDMpointer();
46 //yuany 2005-2-28
47 mdcGeoPointer=BesMdcGeoParameter::GetGeo();
48
49 IG4Svc* tmpSvc;
50 StatusCode sc=Gaudi::svcLocator()->service("G4Svc", tmpSvc);
51 if (!sc.isSuccess())
52 G4cout <<" BesRawDataWriter::Error,could not open G4Svc"<<G4endl;
53 m_G4Svc=dynamic_cast<G4Svc *>(tmpSvc);
54
55 IRealizationSvc *tmpReal;
56 StatusCode scReal = Gaudi::svcLocator()->service("RealizationSvc",tmpReal);
57 if (!scReal.isSuccess())
58 {
59 std::cout << " Could not initialize Realization Service in BesRawDataWriter" << std::endl;
60 }
61 else
62 {
63 m_RealizationSvc=dynamic_cast<RealizationSvc*>(tmpReal);
64 }
65
66}
67
69{
70}
71
73{
74 //interface to event data service
75 ISvcLocator* svcLocator = Gaudi::svcLocator();
76 StatusCode sc=svcLocator->service("EventDataSvc", m_evtSvc);
77 if (sc.isFailure())
78 G4cout<<"Could not accesss EventDataSvc!"<<G4endl;
79
80 DigiEvent* aDigiEvent = new DigiEvent;
81 sc = m_evtSvc->registerObject("/Event/Digi",aDigiEvent);
82 if(sc!=StatusCode::SUCCESS) {
83 G4cout<< "Could not register DigiEvent" <<G4endl;
84 }
85
90}
91
93{
94 //mdc digis collection defined in BOSS
95 MdcDigiCol* aMdcDigiCol = new MdcDigiCol;
96
97 G4int mdcDigiCollID = -1;
98 mdcDigiCollID = m_DigiMan->GetDigiCollectionID("BesMdcDigisCollection");
99 if(mdcDigiCollID>=0)
100 {
101 BesMdcDigisCollection* mdcDC = (BesMdcDigisCollection*)m_DigiMan->GetDigiCollection(mdcDigiCollID);
102 G4int nDigi = mdcDC->entries();
103 if(nDigi>0)
104 {
105 //push back mdc digits to MdcDigiCol in BOSS
106 BesMdcDigi* mdcDigi;
107 for(int i=0;i<nDigi;i++)
108 {
109 mdcDigi=(*mdcDC)[i];
110 unsigned int charge;
111 if(m_G4Svc->GetMdcDedxFlag()==1){
112 charge = int(mdcDigi->GetEdep());
113 }else{
114 charge = RawDataUtil::MdcChargeChannel(mdcDigi->GetEdep());
115 }
116 unsigned int time = RawDataUtil::MdcTimeChannel(mdcDigi->GetDriftT());
117 const Identifier ident = MdcID::wire_id ( mdcDigi->GetLayerNo(), mdcDigi->GetCellNo() );
118
119 MdcDigi* aMdcDigi = new MdcDigi(ident, time, charge);
120 aMdcDigi->setTrackIndex(mdcDigi->GetTrackID());
121 aMdcDigiCol->push_back(aMdcDigi);
122 }
123 }
124 }
125
126 //register MDC digits collection to TDS
127 StatusCode scMdc = m_evtSvc->registerObject("/Event/Digi/MdcDigiCol", aMdcDigiCol);
128 if(scMdc!=StatusCode::SUCCESS)
129 G4cout<< "Could not register MDC digi collection" <<G4endl;
130
131 //retrieve MDC digits from TDS
132 /*SmartDataPtr<MdcDigiCol> aDigiCol(m_evtSvc,"/Event/Digi/MdcDigiCol");
133 if(!aDigiCol)
134 G4cout<<"Could not retrieve MDC digi collection"<<G4endl;
135
136 MdcDigiCol::iterator iDigiCol;
137 for(iDigiCol=aDigiCol->begin(); iDigiCol!=aDigiCol->end(); iDigiCol++)
138 {
139 const Identifier ident = (*iDigiCol)->identify();
140 G4cout<<"layer: "<<MdcID::layer(ident);
141 G4cout<<" cell: "<<MdcID::wire(ident);
142 G4cout<<" charge: "<<(*iDigiCol)->getChargeChannel();
143 G4cout<<" time: "<<(*iDigiCol)->getTimeChannel()<<G4endl;
144 }
145 G4cout<<"end of retrieve MDC digi collection"<<G4endl;
146 */
147}
148
150{
151 //Tof digits collection defined in BOSS
152 TofDigiCol* aTofDigiCol = new TofDigiCol;
153
154 G4int tofDigiCollID = -1;
155 tofDigiCollID = m_DigiMan->GetDigiCollectionID("BesTofDigitsCollection");
156
157 if(tofDigiCollID>=0)
158 {
159 BesTofDigitsCollection* tofDC = (BesTofDigitsCollection*)m_DigiMan->GetDigiCollection(tofDigiCollID);
160 G4int nDigi = tofDC->entries();
161 if(nDigi>0)
162 {
163 //arrange digis in digitsCollection in order of trackIndex
164
165 //std::cout << "BesRawDataWriter Arange Digis " << std::endl;
166 BesTofDigi* digi;
167 vector<BesTofDigi*>* vecDC = tofDC->GetVector();
168 for(int i=0;i<nDigi-1;i++)
169 for(int j=i+1;j<nDigi;j++)
170 if((*vecDC)[i]->GetTrackIndex()>(*vecDC)[j]->GetTrackIndex())
171 {
172 digi = (*vecDC)[i];
173 (*vecDC)[i] = (*vecDC)[j];
174 (*vecDC)[j] = digi;
175 }
176 //std::cout << "BesRawDataWriter Digis are arranged " << std::endl;
177
178
179 //push back tof digits to TofDigiCol in BOSS
180 for(int i=0;i<nDigi;i++)
181 {
182 //std::cout << "BesRawDataWriter Try: digi = (*tofDC)[i] " << std::endl;
183 digi = (*tofDC)[i];
184 //std::cout << "BesRawDataWriter OK: digi = (*tofDC)[i] " << std::endl;
185 G4int scinNum = digi->GetScinNb();
186 G4int barrel_ec = digi->GetPartId();
187
188
189 //std::cout << "BesRawDataWriter scinNum: "<< scinNum << std::endl;
190 //std::cout << "BesRawDataWriter barrel_ec: "<< barrel_ec << std::endl;
191 //std::cout << "BesRawDataWriter is_barrel(barrel_ec): "<<TofID::is_barrel(barrel_ec)<<std::endl;
192
193
194 //#Matthias. scinNum: 154
195 //#Matthias. barrel_ec: 1
196 //#Matthias is_barrel(barrel_ec): 1
197
198
199 unsigned int layer = 0;
200 Identifier ident;
201 unsigned int time =0;
202
203
204
205
206 if(barrel_ec == 0 || barrel_ec == 1 || barrel_ec == 2) //These numbers stand for the old TOF
207 {
208 //std::cout << "BesRawDataWriter: You are using the old TOF as TOF Detector. PartID = " << barrel_ec << std::endl;
209
210
211 if (TofID::is_barrel(barrel_ec) && scinNum > TofID::getPHI_BARREL_MAX()) {
212 layer = 1;
213 scinNum = scinNum - TofID::getPHI_BARREL_MAX() - 1;
214 }
215
216 // Store tofDigi for end==0
217 ident = TofID::cell_id ( barrel_ec, layer, scinNum, 0);
218
219 if(digi->GetForwTDC() > 0 )
221 else
222 time = 0;
223
224
225 unsigned int charge;
226
227 if(digi->GetForwADC() > 0 )
228 {
229 // ADC linear conversion
230 charge = digi->GetForwADC(); // convert ADC(pC) of bTof into Q channel in Data
231 // Treat ADC overflow
232 if(charge>=8192)
233 {
234 // The overlow flag is the 20th bit of the ADC_channel.
235 charge = (charge | 0x080000);// if ADC_channel>=8192, set overflow flag = 1.
236 // 10000000000000000000 //The 20th bit is the overflow flag
237 // 1111111111111 // =8191 -> 13 bits are required to store the information
238 // 1111110000000000000 //The time information is stored in bit 14-19, however the time is stored in an additonal indentifier, too.
239 //std::cout << "BesRawDataWriter Charge overflow ForwardADC" << std::endl;
240 }
241 charge = ( (time & 0x07e000) | charge) ; // Store tclock into ADC_channel as qclock
242 }
243 else
244 charge =0;
245
246
247 TofDigi* tofDigi = new TofDigi(ident, time, charge);
248
249 if( charge & 0x80000 ) // Treat overflow flag(20th bit)
250 {tofDigi->setOverflow(0x2);}
251
252 tofDigi->setTrackIndex(digi->GetTrackIndex());
253 aTofDigiCol->push_back(tofDigi);
254
255
256 if(barrel_ec == 0 || barrel_ec == 1 || barrel_ec == 2) //These numbers stand for the old TOF
257 {
258
259 ident = TofID::cell_id ( barrel_ec, layer, scinNum, 1);
260 if(digi->GetBackTDC()>0)
262 else
263 time = 0;
264 /*
265 G4cout << G4endl << "#Matthias charge: " << charge << G4endl;
266 G4cout << "#Matthias time " << time << G4endl;
267 G4cout << "#Matthias time /fac " << time*0.00239 << G4endl;
268 G4cout << "#Matthias (time & 0x07e000) : " << (time & 0x07e000) << G4endl;
269 G4cout << "#Matthias ( (time & 0x07e000) | charge) " << ( (time & 0x07e000) | charge) << G4endl;
270 if( charge & 0x80000 ) G4cout << "#Matthias: overflow" << G4endl;
271 if( ( (time & 0x07e000) | charge) != charge ) G4cout << "#Matthias: ungleich" << G4endl;
272 */
273 if(digi->GetBackADC()>0 )
274 {
275
276 // ADC linear conversion
277 charge = digi->GetBackADC();
278
279 // Treat ADC overflow
280 if(charge>=8192)
281 {
282 // The overlow flag is the 20th bit of the ADC_channel.
283 charge = (charge | 0x080000);// if ADC_channel>=8192, set overflow flag = 1.
284 }
285 charge = ( (time & 0x07e000) | charge) ; // Store tclock into ADC_channel as qclock
286 }
287 else
288 charge = 0;
289
290
291
292 tofDigi = new TofDigi(ident, time, charge);
293
294 if( charge & 0x80000 ) // Treat overflow flag(20th bit)
295 tofDigi->setOverflow(0x2);
296 tofDigi->setTrackIndex(digi->GetTrackIndex());
297
298 aTofDigiCol->push_back(tofDigi);
299
300
301 }//close if(barrel_ec == 0 || ...)
302
303 }//close if(barrel_ec == 0 || barrel_ec == 1 || barrel_ec == 2)
304
305
306
307 ////////////////
308 /// NewMRPC ////
309 ////////////////
310
311 else if(barrel_ec == 3 || barrel_ec == 4 || barrel_ec == 5 || barrel_ec == 6) //MRPC-Detector
312 {
313 //std::cout << "BesRawDataWriter: You are using the new MRPC as TOF Detector. PartID | scinNum " << barrel_ec << " | " << scinNum << std::endl;
314 ident = TofID::cell_id_mrpc ( barrel_ec, scinNum);
315
316
317 //static double TofTime(unsigned int timeChannel) { return ((double)timeChannel)*TOF_TIME_FACTOR; }
318 //static unsigned int TofTimeChannel (double time) { return (unsigned int)(time/TOF_TIME_FACTOR); } //Konvertiere TofTime in Zeitchannel: factor = 0.00293
319
320 if(digi->GetForwTDC() > 0 )
322 else
323 time = 0;
324
325
326
327 unsigned int time2;
328
329 if(digi->GetBackTDC() > 0 ) time2 = RawDataUtil::TofTimeChannel(digi->GetBackTDC());
330 else time2 = 0;
331
332
333
334 /*
335 std::cout << "Time1 ns " << digi->GetForwTDC() << std::endl;
336 std::cout << "Time2 ns " << digi->GetBackTDC() << std::endl;
337 std::cout << "Time1 channel " << time << std::endl;
338 std::cout << "Time2 channel " << time2 << std::endl;
339 std::cout << "charge from time2 " << exp(RawDataUtil::TofTime(time2-time)-10.)/1000. << " pC"<< std::endl;
340 */
341
342
343
344 //std::cout << "BesRawDataWriter : ident "<<ident<<std::endl;
345 //std::cout << "BesRawDataWriter : partId |time "<< barrel_ec <<" "<<time<<std::endl;
346
347
348
349
350 /* //Here I did store the charge directly, this is not done anymore as the real raw data will be to times. The difference of those time decodes the input charge!
351 unsigned int charge;
352
353 if(digi->GetForwADC() > 0 )
354 {
355 // ADC linear conversion
356 charge = digi->GetForwADC(); // convert ADC(pC) of bTof into Q channel in Data
357 //std::cout << "BesRawDataWriter :partID | charge "<< barrel_ec<<" "<<charge<<std::endl;
358
359 // Treat ADC overflow
360 if(charge>=8192)
361 {
362 // The overlow flag is the 20th bit of the ADC_channel.
363 charge = (charge | 0x080000);// if ADC_channel>=8192, set overflow flag = 1.
364 // 10000000000000000000 //The 20th bit is the overflow flag
365 // 1111111111111 // =8191 -> 13 bits are required to store the information
366 // 1111110000000000000 //The time information is stored in bit 14-19, however the time is stored in an additonal indentifier, too.
367 //std::cout << "BesRawDataWriter Charge overflow ForwardADC" << std::endl;
368 }
369 charge = ( (time & 0x07e000) | charge) ; // Store tclock into ADC_channel as qclock
370 }
371 else
372 charge =0;
373
374
375 //std::cout << "BesRawDataWriter : Ende - ident "<<ident<<std::endl;
376
377 // std::cout << "BesRawDataWriter : real - time "<<digi->GetForwTDC()<<std::endl;
378 //std::cout << "BesRawDataWriter : charge mit Zeit " <<charge<<std::endl;
379 //std::cout << "BesRawDataWriter : charge rekons " <<(charge & 0x1fff)<<std::endl;
380 //std::cout << "BesRawDataWriter : TDC - time "<<RawDataUtil::TofTimeChannel(digi->GetForwTDC())<<std::endl;
381 //std::cout << "BesRawDataWriter : ADC - charge "<<digi->GetForwADC()<<std::endl;
382 */
383
384
385 TofDigi* tofDigi = new TofDigi(ident, time, time2);
386 //std::cout << "BesRawDataWriter : TofDigi is stored "<<std::endl;
387
388 tofDigi->setTrackIndex(digi->GetTrackIndex());
389 //std::cout << "BesRawDataWriter : TofDigi: SetTrackIndex "<<std::endl;
390 aTofDigiCol->push_back(tofDigi);
391 //std::cout << "BesRawDataWriter : TofDigi: Pushback "<<std::endl;
392
393
394
395 }
396
397
398
399
400
401
402
403
404
405
406
407 }//close for
408 } //close if(nDigi>0)
409 } //close if(tofDigiCollID>=0)
410
411 //register TOF digits collection to TDS
412 StatusCode scTof = m_evtSvc->registerObject("/Event/Digi/TofDigiCol", aTofDigiCol);
413 if(scTof!=StatusCode::SUCCESS)
414 G4cout<< "Could not register TOF digi collection" <<G4endl;
415
416 //std::cout << "BesRawDataWriter : TOF digi colleceton is registered! "<<std::endl;
417
418
419 //retrieve TOF digits from TDS
420 /*SmartDataPtr<TofDigiCol> aDigiCol(m_evtSvc,"/Event/Digi/TofDigiCol");
421 if(!aDigiCol)
422 G4cout<<"Could not retrieve TOF digi collection"<<G4endl;
423
424 TofDigiCol::iterator iDigiCol;
425 for(iDigiCol=aDigiCol->begin(); iDigiCol!=aDigiCol->end(); iDigiCol++)
426 {
427 const Identifier ident = (*iDigiCol)->identify();
428 G4cout<<"partId: "<<TofID::barrel_ec(ident);
429 G4cout<<" layer: "<<TofID::layer(ident);
430 G4cout<<" scinNb: "<<TofID::phi_module(ident);
431 // G4cout<<" end: "<<TofID::end(ident);
432 G4cout<<" charge: "<<(*iDigiCol)->getChargeChannel();
433 G4cout<<" time: "<<(*iDigiCol)->getTimeChannel()<<G4endl;
434 }
435 G4cout<<"end of retrieve TOF digits"<<G4endl;
436 */
437}
438
440{
441 //Emc digits collection defined in BOSS
442 EmcDigiCol* aEmcDigiCol = new EmcDigiCol;
443
444 G4int emcDigiCollID = -1;
445 emcDigiCollID = m_DigiMan->GetDigiCollectionID("BesEmcDigitsCollection");
446 if(emcDigiCollID>=0)
447 {
448 BesEmcDigitsCollection* emcDC = (BesEmcDigitsCollection*)m_DigiMan->GetDigiCollection(emcDigiCollID);
449 G4int nDigi = emcDC->entries();
450 if(nDigi>0)
451 {
452 //arrange digis in digitsCollection in order of trackIndex
453 BesEmcDigi* digi;
454 vector<BesEmcDigi*>* vecDC = emcDC->GetVector();
455 for(int i=0;i<nDigi-1;i++)
456 for(int j=i+1;j<nDigi;j++)
457 if((*vecDC)[i]->GetTrackIndex()>(*vecDC)[j]->GetTrackIndex())
458 {
459 digi = (*vecDC)[i];
460 (*vecDC)[i] = (*vecDC)[j];
461 (*vecDC)[j] = digi;
462 }
463 //push back EmcDigi to EmcDigiCol in BOSS
464 for(int i=0;i<nDigi;i++)
465 {
466 digi = (*emcDC)[i];
467
468 int charge = RawDataUtil::EmcChargeChannel(digi->GetEnergy());
469 int measure = RawDataUtil::EmcChargeMeasure(digi->GetEnergy());
471 Identifier ident = EmcID::crystal_id (digi->GetPartId(), digi->GetThetaNb(), digi->GetPhiNb());
472 EmcDigi* emcDigi = new EmcDigi(ident, time, charge);
473 emcDigi->setTrackIndex(digi->GetTrackIndex());
474 emcDigi->setMeasure(measure);
475 aEmcDigiCol->push_back(emcDigi);
476 }
477 }
478 }
479
480 //register EMC digits collection to TDS
481 StatusCode scEmc = m_evtSvc->registerObject("/Event/Digi/EmcDigiCol", aEmcDigiCol);
482 if(scEmc!=StatusCode::SUCCESS)
483 G4cout<< "Could not register EMC digi collection" <<G4endl;
484
485 //retrieve EMC digits from TDS
486 /*SmartDataPtr<EmcDigiCol> aDigiCol(m_evtSvc,"/Event/Digi/EmcDigiCol");
487 if(!aDigiCol)
488 G4cout<<"Could not retrieve EMC digi collection"<<G4endl;
489
490 EmcDigiCol::iterator iDigiCol;
491 for(iDigiCol=aDigiCol->begin(); iDigiCol!=aDigiCol->end(); iDigiCol++)
492 {
493 const Identifier ident = (*iDigiCol)->identify();
494 G4cout<<"barrel_ec: "<<EmcID::barrel_ec(ident);
495 G4cout<<" theta: "<<EmcID::theta_module(ident);
496 G4cout<<" phi: "<<EmcID::phi_module(ident);
497 G4cout<<" charge: "<<(*iDigiCol)->getChargeChannel();
498 G4cout<<" time: "<<(*iDigiCol)->getTimeChannel()<<G4endl;
499 }
500 G4cout<<"end of retrieve EMC digits"<<G4endl;
501 */
502}
503
505{
506 //Muc digits collection defined in BOSS
507 MucDigiCol* aMucDigiCol = new MucDigiCol;
508
509 G4int mucDigiCollID =-1;
510 mucDigiCollID = m_DigiMan->GetDigiCollectionID("BesMucDigisCollection");
511 if(mucDigiCollID>=0)
512 {
513 BesMucDigisCollection* mucDC = (BesMucDigisCollection*)m_DigiMan->GetDigiCollection(mucDigiCollID);
514 G4int nDigi = mucDC->entries();
515
516 if(nDigi > 0) {
517 BesMucDigi* digi;
518 for(int i = 0; i < nDigi; i++) {
519 digi = (*mucDC)[i];
520 Identifier ident = MucID::channel_id( digi->GetPartId(), digi->GetSegId(),digi->GetGapId(),digi->GetStripId() );
521 MucDigi* mucDigi = new MucDigi(ident);
522 mucDigi->setTrackIndex(digi->GetTrackIndex());
523 aMucDigiCol->push_back(mucDigi);
524 }
525 }
526 }
527
528 //register MUC digits collection to TDS
529 StatusCode scMuc = m_evtSvc->registerObject("/Event/Digi/MucDigiCol", aMucDigiCol);
530 if(scMuc!=StatusCode::SUCCESS)
531 G4cout<< "Could not register MUC digi collection" <<G4endl;
532
533 //retrieve MUC digits from TDS
534 /*SmartDataPtr<MucDigiCol> aDigiCol(m_evtSvc,"/Event/Digi/MucDigiCol");
535 if(!aDigiCol)
536 G4cout<<"Could not retrieve MUC digi collection"<<G4endl;
537
538 MucDigiCol::iterator iDigiCol;
539 for(iDigiCol=aDigiCol->begin(); iDigiCol!=aDigiCol->end(); iDigiCol++)
540 {
541 const Identifier ident = (*iDigiCol)->identify();
542 G4cout<<"Part: "<<MucID::part(ident);
543 G4cout<<" Seg: "<<MucID::seg(ident);
544 G4cout<<" Gap: "<<MucID::gap(ident);
545 G4cout<<" Strip: "<<MucID::strip(ident)<<G4endl;
546 }
547 G4cout<<"end of retrieve MUC digits"<<G4endl;
548 */
549}
G4TDigiCollection< BesEmcDigi > BesEmcDigitsCollection
Definition: BesEmcDigi.hh:69
G4TDigiCollection< BesMdcDigi > BesMdcDigisCollection
Definition: BesMdcDigi.hh:59
G4TDigiCollection< BesMucDigi > BesMucDigisCollection
Definition: BesMucDigi.hh:56
G4TDigiCollection< BesTofDigi > BesTofDigitsCollection
Definition: BesTofDigi.hh:83
Double_t time
ObjectVector< EmcDigi > EmcDigiCol
Definition: EmcDigi.h:43
ObjectVector< MdcDigi > MdcDigiCol
Definition: MdcDigi.h:39
ObjectVector< MucDigi > MucDigiCol
Definition: MucDigi.h:29
ObjectVector< TofDigi > TofDigiCol
Definition: TofDigi.h:41
G4int GetTrackIndex()
Definition: BesEmcDigi.hh:54
G4int GetThetaNb()
Definition: BesEmcDigi.hh:50
G4double GetEnergy()
Definition: BesEmcDigi.hh:52
G4int GetPhiNb()
Definition: BesEmcDigi.hh:51
G4double GetTime()
Definition: BesEmcDigi.hh:53
G4int GetPartId()
Definition: BesEmcDigi.hh:49
G4int GetLayerNo()
Definition: BesMdcDigi.hh:44
G4double GetEdep()
Definition: BesMdcDigi.hh:46
G4int GetCellNo()
Definition: BesMdcDigi.hh:45
G4int GetTrackID()
Definition: BesMdcDigi.hh:43
G4double GetDriftT()
Definition: BesMdcDigi.hh:47
static BesMdcGeoParameter * GetGeo(void)
G4int GetPartId()
Definition: BesMucDigi.hh:43
G4int GetStripId()
Definition: BesMucDigi.hh:46
G4int GetSegId()
Definition: BesMucDigi.hh:44
G4int GetTrackIndex()
Definition: BesMucDigi.hh:42
G4int GetGapId()
Definition: BesMucDigi.hh:45
G4int GetPartId()
Definition: BesTofDigi.hh:55
G4double GetForwTDC()
Definition: BesTofDigi.hh:59
G4int GetScinNb()
Definition: BesTofDigi.hh:56
G4int GetTrackIndex()
Definition: BesTofDigi.hh:54
G4double GetBackTDC()
Definition: BesTofDigi.hh:60
G4double GetBackADC()
Definition: BesTofDigi.hh:58
G4double GetForwADC()
Definition: BesTofDigi.hh:57
void setMeasure(const unsigned int measure)
Definition: EmcDigi.h:24
static Identifier crystal_id(const unsigned int barrel_ec, const unsigned int theta_module, const unsigned int phi_module)
For a single crystal.
Definition: EmcID.cxx:71
Definition: G4Svc.h:32
int GetMdcDedxFlag()
Definition: G4Svc.h:94
Definition: IG4Svc.h:30
static Identifier wire_id(int wireType, int layer, int wire)
For a single wire.
Definition: MdcID.cxx:77
static Identifier channel_id(int barrel_ec, int segment, int layer, int channel)
For a single crystal.
Definition: MucID.cxx:135
static int EmcChargeChannel(double charge)
Definition: RawDataUtil.h:37
static int MdcTimeChannel(double time)
Definition: RawDataUtil.h:9
static int EmcChargeMeasure(double charge)
Definition: RawDataUtil.h:50
static int MdcChargeChannel(double charge)
Definition: RawDataUtil.h:12
static unsigned int TofTimeChannel(double time)
Definition: RawDataUtil.h:64
static int EmcTimeChannel(double time)
Definition: RawDataUtil.h:15
void setTrackIndex(const int trackIndex)
Definition: RawData.cxx:35
void setOverflow(const unsigned int overflow)
Definition: TofDigi.h:23
static Identifier cell_id(int barrel_ec, int layer, int phi_module, int end)
For a single crystal.
Definition: TofID.cxx:156
static value_type getPHI_BARREL_MAX()
Definition: TofID.cxx:237
static bool is_barrel(const Identifier &id)
Test for barrel.
Definition: TofID.cxx:78
static Identifier cell_id_mrpc(int partID, int scinNum)
Definition: TofID.cxx:177