CbmRoot
CbmTrdDigitizer.cxx
Go to the documentation of this file.
1 #include "CbmTrdDigitizer.h"
2 
3 #include "CbmMCTrack.h"
4 #include "CbmMatch.h"
5 #include "CbmTrdAddress.h"
6 #include "CbmTrdDigi.h"
7 #include "CbmTrdGeoHandler.h"
8 #include "CbmTrdModuleSim.h"
9 #include "CbmTrdModuleSimR.h"
10 #include "CbmTrdModuleSimT.h"
11 #include "CbmTrdPads.h"
12 #include "CbmTrdParAsic.h"
13 #include "CbmTrdParModDigi.h"
14 #include "CbmTrdParModGain.h"
15 #include "CbmTrdParModGas.h"
16 #include "CbmTrdParModGeo.h"
17 #include "CbmTrdParSetAsic.h"
18 #include "CbmTrdParSetDigi.h"
19 #include "CbmTrdParSetGain.h"
20 #include "CbmTrdParSetGas.h"
21 #include "CbmTrdParSetGeo.h"
22 #include "CbmTrdPoint.h"
23 #include "CbmTrdRadiator.h"
24 
25 #include <FairBaseParSet.h>
26 #include <FairEventHeader.h>
27 #include <FairLogger.h>
28 #include <FairRootManager.h>
29 #include <FairRunAna.h>
30 #include <FairRunSim.h>
31 #include <FairRuntimeDb.h>
32 
33 #include "CbmTrdCheckUtil.h"
34 #include "CbmTrdRawToDigiR.h"
35 #include <TClonesArray.h>
36 #include <TRandom.h>
37 #include <TStopwatch.h>
38 #include <TVector3.h>
39 
40 #include <cmath>
41 #include <iomanip>
42 #include <iostream>
43 using std::cout;
44 using std::endl;
45 using std::make_pair;
46 using std::map;
47 using std::max;
48 using std::pair;
49 using std::vector;
50 using namespace std;
51 Int_t CbmTrdDigitizer::fConfig = 0;
52 
53 //________________________________________________________________________________________
55  : CbmDigitize<CbmTrdDigi>("TrdDigitize")
56  , fLastEventTime(0)
57  , fpoints(0)
58  , nofBackwardTracks(0)
59  , fEfficiency(1.)
60  , fPoints(NULL)
61  , fTracks(NULL)
62  , fDigis(nullptr)
63  , fDigiMatches(nullptr)
64  , fAsicPar(NULL)
65  , fGasPar(NULL)
66  , fDigiPar(NULL)
67  , fGainPar(NULL)
68  , fGeoPar(NULL)
69  , fRadiator(radiator)
70  , fConverter(NULL)
71  , fQA(NULL)
72  // ,fConverter()
73  // ,fGeoHandler(new CbmTrdGeoHandler())
74  , fModuleMap()
75  , fDigiMap() {
76  if (fRadiator == NULL) fRadiator = new CbmTrdRadiator(kTRUE, "K++");
77 }
78 
79 
80 //________________________________________________________________________________________
82  ResetArrays();
83  delete fDigis;
84  delete fDigiMatches;
85  for (map<Int_t, CbmTrdModuleSim*>::iterator imod = fModuleMap.begin();
86  imod != fModuleMap.end();
87  imod++)
88  delete imod->second;
89  fModuleMap.clear();
90 
91  delete fConverter;
92  delete fQA;
93 }
94 
95 
96 //________________________________________________________________________________________
98  fAsicPar = static_cast<CbmTrdParSetAsic*>(
99  FairRunAna::Instance()->GetRuntimeDb()->getContainer("CbmTrdParSetAsic"));
100  fGasPar = static_cast<CbmTrdParSetGas*>(
101  FairRunAna::Instance()->GetRuntimeDb()->getContainer("CbmTrdParSetGas"));
102  fDigiPar = static_cast<CbmTrdParSetDigi*>(
103  FairRunAna::Instance()->GetRuntimeDb()->getContainer("CbmTrdParSetDigi"));
104  fGainPar = static_cast<CbmTrdParSetGain*>(
105  FairRunAna::Instance()->GetRuntimeDb()->getContainer("CbmTrdParSetGain"));
106  fGeoPar = new CbmTrdParSetGeo(); //fGeoPar->Print();
107 }
108 
109 //________________________________________________________________________________________
110 InitStatus CbmTrdDigitizer::Init() {
111  FairRootManager* ioman = FairRootManager::Instance();
112  if (!ioman) LOG(fatal) << "CbmTrdDigitizer::Init: No FairRootManager";
113 
114  fPoints = (TClonesArray*) ioman->GetObject("TrdPoint");
115  if (!fPoints) LOG(fatal) << "CbmTrdDigitizer::Init(): No TrdPoint array!";
116 
117  fTracks = (TClonesArray*) ioman->GetObject("MCTrack");
118  if (!fTracks) LOG(fatal) << "CbmTrdDigitizer::Init(): No MCTrack array!";
119 
120  if (fRadiator) fRadiator->Init();
121 
123  fQA = new CbmTrdCheckUtil();
124 
125  // Set time-based mode if appropriate
126  SetTimeBased(fEventMode ? kFALSE : kTRUE);
127 
128  RegisterOutput();
129 
130 
131  LOG(info) << "================ TRD Digitizer ===============";
132  LOG(info) << " Free streaming : " << (IsTimeBased() ? "yes" : "no");
133  LOG(info) << " Add Noise : " << (AddNoise() ? "yes" : "no");
134  LOG(info) << " Weighted distance : " << (UseWeightedDist() ? "yes" : "no");
135 
136  return kSUCCESS;
137 }
138 
139 //________________________________________________________________________________________
140 void CbmTrdDigitizer::Exec(Option_t*) {
141  // start timer
142  TStopwatch timer;
143  timer.Start();
144 
145  // get event info (once per event, used for matching)
146  GetEventInfo();
147 
148  // reset private monitoring counters
149  ResetCounters();
150 
151  // loop tracks in current event
152  CbmTrdModuleSim* mod(NULL);
153  Int_t nofPoints = fPoints->GetEntriesFast();
154  gGeoManager->CdTop();
155  for (Int_t iPoint = 0; iPoint < nofPoints; iPoint++) {
156  fpoints++;
157  //fMCPointId = iPoint;
158 
159  CbmTrdPoint* point = static_cast<CbmTrdPoint*>(fPoints->At(iPoint));
160  if (!point) continue;
161  const CbmMCTrack* track =
162  static_cast<const CbmMCTrack*>(fTracks->At(point->GetTrackID()));
163  if (!track) continue;
164 
165  Double_t dz = point->GetZOut() - point->GetZIn();
166  if (dz < 0) {
167  LOG(debug2) << GetName() << "::Exec: MC-track points towards target!";
169  }
170 
171  // get link to the module working class
172  map<Int_t, CbmTrdModuleSim*>::iterator imod =
173  fModuleMap.find(point->GetDetectorID());
174  if (imod == fModuleMap.end()) {
175  // Looking for gas node corresponding to current point in geo manager
176  Double_t meanX = (point->GetXOut() + point->GetXIn()) / 2.;
177  Double_t meanY = (point->GetYOut() + point->GetYIn()) / 2.;
178  Double_t meanZ = (point->GetZOut() + point->GetZIn()) / 2.;
179  gGeoManager->FindNode(meanX, meanY, meanZ);
180  if (!TString(gGeoManager->GetPath()).Contains("gas")) {
181  LOG(error) << GetName() << "::Exec: MC-track not in TRD! Node:"
182  << TString(gGeoManager->GetPath()).Data()
183  << " gGeoManager->MasterToLocal() failed!";
184  continue;
185  }
186  mod = AddModule(point->GetDetectorID());
187  } else
188  mod = imod->second;
189  mod->SetLinkId(fCurrentInput, fCurrentMCEntry, iPoint);
190  Double_t gamma = TMath::Sqrt(
191  1 + TMath::Power(track->GetP() / (3.e8 * track->GetMass()), 2));
192  mod->SetGamma(gamma);
193  mod->MakeDigi(
194  point, fCurrentEventTime, TMath::Abs(track->GetPdgCode()) == 11);
195  }
196 
197  // Fill data from internally used stl map into CbmDaqBuffer.
198  // Calculate final event statistics
199  Int_t nDigis(0), nofElectrons(0), nofLatticeHits(0),
200  nofPointsAboveThreshold(0), n0, n1, n2;
201  for (map<Int_t, CbmTrdModuleSim*>::iterator imod = fModuleMap.begin();
202  imod != fModuleMap.end();
203  imod++) {
204  // in streaming mode flush buffers only up to a certain point in time wrt to current event time (allow for event pile-ups)
205  //printf("Processing data for module %d\n", imod->first);
206  if (IsTimeBased()) nDigis += imod->second->FlushBuffer(fCurrentEventTime);
207  // in event-by-event mode flush all buffers
208  if (!IsTimeBased()) imod->second->FlushBuffer();
209  imod->second->GetCounters(n0, n1, n2);
210  nofElectrons += n0;
211  nofLatticeHits += n1;
212  nofPointsAboveThreshold += n2;
213  std::map<Int_t, std::pair<CbmTrdDigi*, CbmMatch*>>* digis =
214  imod->second->GetDigiMap();
215  //printf(" Digits[%d] %d\n", imod->first, digis->size());
216  for (std::map<Int_t, pair<CbmTrdDigi*, CbmMatch*>>::iterator it =
217  digis->begin();
218  it != digis->end();
219  it++) {
220  assert(it->second.second);
221  SendData(it->second.first, it->second.second);
222  nDigis++;
223  } //# modules
224  digis->clear();
225  } //# digis
227 
228 
229  Double_t digisOverPoints =
230  (nofPoints > 0) ? Double_t(nDigis) / Double_t(nofPoints) : 0;
231  Double_t latticeHitsOverElectrons =
232  (nofElectrons > 0) ? (Double_t) nofLatticeHits / (Double_t) nofElectrons
233  : 0;
234  LOG(debug) << "CbmTrdDigitizer::Exec Points: " << nofPoints;
235  LOG(debug) << "CbmTrdDigitizer::Exec PointsAboveThreshold: "
236  << nofPointsAboveThreshold;
237  LOG(debug) << "CbmTrdDigitizer::Exec Digis: " << nDigis;
238  LOG(debug) << "CbmTrdDigitizer::Exec digis/points: "
239  << digisOverPoints;
240  LOG(debug) << "CbmTrdDigitizer::Exec BackwardTracks: "
242  LOG(debug) << "CbmTrdDigitizer::Exec LatticeHits: "
243  << nofLatticeHits;
244  LOG(debug) << "CbmTrdDigitizer::Exec Electrons: " << nofElectrons;
245  LOG(debug) << "CbmTrdDigitizer::Exec latticeHits/electrons:"
246  << latticeHitsOverElectrons;
247  timer.Stop();
248  LOG(debug) << "CbmTrdDigitizer::Exec real time=" << timer.RealTime()
249  << " CPU time=" << timer.CpuTime();
250 
251  // --- Event log
252  LOG(info) << "+ " << setw(15) << GetName() << ": Event " << setw(6) << right
253  << fCurrentEvent << " at " << fixed << setprecision(3)
254  << fCurrentEventTime << " ns, points: " << nofPoints
255  << ", digis: " << nDigis << ". Exec time " << setprecision(6)
256  << timer.RealTime() << " s.";
257 }
258 
259 //________________________________________________________________________________________
261  LOG(info) << GetName() << ": Processing analogue buffers";
262  Int_t nDigis(0);
263  for (map<Int_t, CbmTrdModuleSim*>::iterator imod = fModuleMap.begin();
264  imod != fModuleMap.end();
265  imod++) {
266  nDigis += imod->second->FlushBuffer();
267  std::map<Int_t, std::pair<CbmTrdDigi*, CbmMatch*>>* digis =
268  imod->second->GetDigiMap();
269  for (std::map<Int_t, pair<CbmTrdDigi*, CbmMatch*>>::iterator it =
270  digis->begin();
271  it != digis->end();
272  it++) {
273  assert(it->second.second);
274  SendData(it->second.first, it->second.second);
275  nDigis++;
276  } //# modules
277  digis->clear();
278  } //# digis
279  LOG(info) << GetName() << ": " << nDigis
280  << (nDigis == 1 ? " digi " : " digis ")
281  << "created and sent to DAQ ";
282 }
283 
284 //________________________________________________________________________________________
286  // flush buffers in streaming mode
287  LOG(info) << "=====================================";
288  LOG(info) << GetName() << ": Finish run";
289  if (IsTimeBased()) FlushBuffers();
290  LOG(info) << GetName() << ": Run summary ";
291  LOG(info) << "=====================================";
292 
293  fQA->DumpPlots();
294 }
295 
296 //________________________________________________________________________________________
313  const char* path = gGeoManager->GetPath();
314  CbmTrdGeoHandler geoHandler;
315  Int_t moduleAddress = geoHandler.GetModuleAddress(path),
316  moduleType = geoHandler.GetModuleType(path),
317  orientation = geoHandler.GetModuleOrientation(path),
318  lyId = CbmTrdAddress::GetLayerId(detId);
319  if (moduleAddress != detId) {
320  LOG(error) << "CbmTrdDigitizer::AddModule: MC module ID " << detId
321  << " does not match geometry definition " << moduleAddress
322  << ". Module init failed!";
323  return NULL;
324  }
325  LOG(debug) << GetName() << "::AddModule(" << path << " "
326  << (moduleType < 9 ? 'R' : 'T') << "] mod[" << moduleAddress
327  << "] ly[" << lyId << "] det[" << detId << "]";
328  CbmTrdModuleSim* module(NULL);
329  if (moduleType >= 9) {
330  module = fModuleMap[moduleAddress] =
331  new CbmTrdModuleSimT(moduleAddress, lyId, orientation, UseFASP());
332  } else {
333  module = fModuleMap[moduleAddress] =
334  new CbmTrdModuleSimR(moduleAddress, lyId, orientation);
335  module->SetMessageConverter(fConverter);
336  module->SetQA(fQA);
337  }
338 
339  // try to load Geometry parameters for module
340  const CbmTrdParModGeo* pGeo(NULL);
341  if (!fGeoPar
342  || !(pGeo = (const CbmTrdParModGeo*) fGeoPar->GetModulePar(detId))) {
343  LOG(debug) << GetName() << "::AddModule : No Geo params for module @ "
344  << path << ". Using default.";
345  module->SetGeoPar(new CbmTrdParModGeo(Form("TRD_%d", detId), path));
346  } else
347  module->SetGeoPar(pGeo);
348 
349  // try to load read-out parameters for module
350  const CbmTrdParModDigi* pDigi(NULL);
351  if (!fDigiPar
352  || !(pDigi = (const CbmTrdParModDigi*) fDigiPar->GetModulePar(detId))) {
353  LOG(debug) << GetName() << "::AddModule : No Read-Out params for module @ "
354  << path << ". Using default.";
355  } else
356  module->SetDigiPar(pDigi);
357 
358  // TODO check if this works also for ModuleR (moduleType < 9) modules
359  if (moduleType >= 9) {
360  // try to load ASIC parameters for module
361  CbmTrdParSetAsic* pAsic(NULL);
362  if (!fAsicPar
363  || !(pAsic = (CbmTrdParSetAsic*) fAsicPar->GetModuleSet(detId))) {
364  LOG(debug) << GetName() << "::AddModule : No ASIC params for module @ "
365  << path << ". Using default.";
366  module
367  ->SetAsicPar(); // map ASIC channels to read-out channels - need ParModDigi already loaded
368  } else
369  module->SetAsicPar(pAsic);
370 
371  // try to load Chamber parameters for module
372  const CbmTrdParModGas* pChmb(NULL);
373  if (!fGasPar
374  || !(pChmb = (const CbmTrdParModGas*) fGasPar->GetModulePar(detId))) {
375  LOG(debug) << GetName() << "::AddModule : No Gas params for module @ "
376  << path << ". Using default.";
377  } else
378  module->SetChmbPar(pChmb);
379 
380  // try to load Gain parameters for module
381  const CbmTrdParModGain* pGain(NULL);
382  if (!fGainPar
383  || !(pGain = (const CbmTrdParModGain*) fGainPar->GetModulePar(detId))) {
384  LOG(debug) << GetName() << "::AddModule : No Gain params for module @ "
385  << path << ". Using default.";
386  } else
387  module->SetGainPar(pGain);
388  }
389 
390  if (fRadiator) module->SetRadiator(fRadiator);
391 
392  // Register this class to the module. For data transport through SendData().
393  module->SetDigitizer(this);
394 
395 
396  return module;
397 }
398 
399 //________________________________________________________________________________________
403  fpoints = 0;
404  nofBackwardTracks = 0;
405  for (std::map<Int_t, CbmTrdModuleSim*>::iterator imod = fModuleMap.begin();
406  imod != fModuleMap.end();
407  imod++)
408  imod->second->ResetCounters();
409 }
410 
411 
413 
414  if (fDigis) fDigis->clear();
415  if (fDigiMatches) fDigiMatches->clear();
416 }
417 
418 
CbmTrdDigitizer::fGeoPar
CbmTrdParSetGeo * fGeoPar
parameter list for geometry definitions
Definition: CbmTrdDigitizer.h:139
CbmTrdDigitizer::Exec
virtual void Exec(Option_t *option)
Inherited from FairTask.
Definition: CbmTrdDigitizer.cxx:140
CbmTrdDigitizer::fRadiator
CbmTrdRadiator * fRadiator
parametrization of radiator TR yield
Definition: CbmTrdDigitizer.h:140
CbmTrdDigitizer::FlushBuffers
void FlushBuffers()
Flush local digi buffers to CbmDaqBuffer.
Definition: CbmTrdDigitizer.cxx:260
CbmTrdParModGas.h
CbmTrdParSetAsic::GetModuleSet
virtual const CbmTrdParSet * GetModuleSet(Int_t detId) const
Definition: CbmTrdParSetAsic.cxx:238
CbmMCTrack::GetMass
Double_t GetMass() const
Mass of the associated particle.
Definition: CbmMCTrack.cxx:114
CbmTrdGeoHandler::GetModuleAddress
Int_t GetModuleAddress()
Return module address calculated based on the current node in the TGeoManager.
Definition: CbmTrdGeoHandler.cxx:49
CbmTrdPoint::GetYOut
Double_t GetYOut() const
Definition: CbmTrdPoint.h:67
CbmTrdDigitizer::fTracks
TClonesArray * fTracks
MC Track information.
Definition: CbmTrdDigitizer.h:131
CbmTrdPoint::GetZIn
Double_t GetZIn() const
Definition: CbmTrdPoint.h:65
CbmTrdAddress.h
Helper class to convert unique channel ID back and forth.
CbmTrdDigitizer::fConfig
static Int_t fConfig
Configuration map for the digitizer. See CbmTrdSimDef for details.
Definition: CbmTrdDigitizer.h:119
CbmDigitizeBase::GetEventInfo
void GetEventInfo()
Get event information.
Definition: CbmDigitizeBase.cxx:48
CbmTrdParSetGas
Describe TRD module working settings (HV, etc)
Definition: CbmTrdParSetGas.h:15
CbmTrdParSetGeo.h
CbmTrdDigitizer::fPoints
TClonesArray * fPoints
Trd MC points.
Definition: CbmTrdDigitizer.h:130
CbmTrdDigitizer.h
TRD digitizer. Updated 24/04/2013 by Andrey Lebedev andrey.lebedev@gsi.de Updated 4/06/2018 by Alex B...
CbmTrdModuleAbstract::GetPath
virtual const Char_t * GetPath() const
Definition: CbmTrdModuleAbstract.h:66
CbmMCTrack::GetPdgCode
Int_t GetPdgCode() const
Definition: CbmMCTrack.h:70
CbmTrdParSetAsic
Describe TRD module ASIC settings (electronic gain, delays, etc)
Definition: CbmTrdParSetAsic.h:18
CbmTrdDigitizer::fDigiPar
CbmTrdParSetDigi * fDigiPar
parameter list for read-out geometry
Definition: CbmTrdDigitizer.h:137
CbmTrdGeoHandler::GetModuleType
Int_t GetModuleType(const TString &path)
Definition: CbmTrdGeoHandler.cxx:142
CbmDigitizeBase::fCurrentMCEntry
Int_t fCurrentMCEntry
Number of current MC event.
Definition: CbmDigitizeBase.h:164
CbmTrdPoint::GetXOut
Double_t GetXOut() const
Definition: CbmTrdPoint.h:66
CbmTrdDigitizer::ResetCounters
void ResetCounters()
Recursive reset all private monitoring counters.
Definition: CbmTrdDigitizer.cxx:400
CbmTrdAddress::GetLayerId
static UInt_t GetLayerId(UInt_t address)
Return layer ID from address.
Definition: CbmTrdAddress.h:69
CbmTrdDigitizer::fAsicPar
CbmTrdParSetAsic * fAsicPar
parameter list for ASIC characterization
Definition: CbmTrdDigitizer.h:135
CbmTrdRadiator.h
CbmMatch.h
CbmTrdParModGeo.h
CbmTrdDigitizer::fModuleMap
std::map< Int_t, CbmTrdModuleSim * > fModuleMap
list of modules being processed
Definition: CbmTrdDigitizer.h:147
CbmTrdParAsic.h
CbmTrdModuleSimT.h
CbmTrdModuleSim
Abstract class for module wise digitization and raw format producing.
Definition: CbmTrdModuleSim.h:18
CbmTrdParSetAsic.h
CbmTrdGeoHandler
Definition: CbmTrdGeoHandler.h:29
CbmTrdPads.h
CbmTrdDigitizer::fDigis
std::vector< CbmTrdDigi > * fDigis
Output CbmTrdDigi array.
Definition: CbmTrdDigitizer.h:132
CbmTrdParModGain.h
CbmTrdGeoHandler::GetModuleOrientation
Int_t GetModuleOrientation(const TString &path)
Navigate to node and return pad orientation.
Definition: CbmTrdGeoHandler.cxx:107
CbmTrdParSetGain
Definition: CbmTrdParSetGain.h:16
CbmTrdDigi.h
CbmTrdDigitizer::fDigiMatches
std::vector< CbmMatch > * fDigiMatches
Output CbmMatch array.
Definition: CbmTrdDigitizer.h:133
CbmTrdDigitizer::fQA
CbmTrdCheckUtil * fQA
Definition: CbmTrdDigitizer.h:143
CbmTrdParModGeo
Definition of geometry for one TRD module.
Definition: CbmTrdParModGeo.h:12
CbmTrdModuleSim.h
CbmTrdRadiator::Init
void Init(Bool_t SimpleTR, Int_t Nfoils, Float_t FoilThick, Float_t GapTick, TString material)
Definition: CbmTrdRadiator.cxx:201
CbmTrdGeoHandler.h
Helper class to extract information from the GeoManager.
CbmDigitize
Base class template for CBM digitisation tasks.
Definition: CbmDigitize.h:39
CbmTrdDigitizer::ResetArrays
virtual void ResetArrays()
Clear data arrays.
Definition: CbmTrdDigitizer.cxx:412
CbmDigitizeBase::fEventMode
Bool_t fEventMode
Definition: CbmDigitizeBase.h:159
CbmTrdDigitizer::UseWeightedDist
static Bool_t UseWeightedDist()
Definition: CbmTrdDigitizer.h:57
CbmTrdParModDigi
Definition of chamber gain conversion for one TRD module.
Definition: CbmTrdParModDigi.h:14
CbmTrdDigitizer::CbmTrdDigitizer
CbmTrdDigitizer(CbmTrdRadiator *radiator=NULL)
Constructor.
Definition: CbmTrdDigitizer.cxx:54
CbmDigitizeBase::fCurrentEvent
Int_t fCurrentEvent
Number of current input.
Definition: CbmDigitizeBase.h:163
CbmTrdParModDigi.h
CbmTrdDigitizer::fpoints
Int_t fpoints
Definition: CbmTrdDigitizer.h:125
CbmTrdParSetGain.h
CbmTrdParSet::GetModulePar
virtual const CbmTrdParMod * GetModulePar(Int_t detId) const
Definition: CbmTrdParSet.cxx:45
CbmTrdDigitizer::nofBackwardTracks
Int_t nofBackwardTracks
Definition: CbmTrdDigitizer.h:126
CbmDigitizeBase::fCurrentInput
Int_t fCurrentInput
Flag for creation of links to MC.
Definition: CbmDigitizeBase.h:162
ClassImp
ClassImp(CbmConverterManager) InitStatus CbmConverterManager
Definition: CbmConverterManager.cxx:12
CbmDigitizeBase::fCurrentEventTime
Double_t fCurrentEventTime
Number of current MC entry.
Definition: CbmDigitizeBase.h:165
CbmTrdModuleSimR.h
CbmTrdDigitizer::fConverter
CbmTrdRawToDigiR * fConverter
Definition: CbmTrdDigitizer.h:142
CbmTrdPoint::GetZOut
Double_t GetZOut() const
Definition: CbmTrdPoint.h:68
CbmTrdDigitizer::UseFASP
static Bool_t UseFASP()
Definition: CbmTrdDigitizer.h:58
CbmTrdParSetGeo
Definition: CbmTrdParSetGeo.h:9
CbmTrdRadiator
Definition: CbmTrdRadiator.h:24
CbmTrdDigitizer
Definition: CbmTrdDigitizer.h:36
CbmTrdDigitizer::AddModule
CbmTrdModuleSim * AddModule(Int_t detId)
Create module for current MC point.
Definition: CbmTrdDigitizer.cxx:297
CbmTrdParSetDigi.h
CbmTrdPoint
Definition: CbmTrdPoint.h:23
CbmDigitize< CbmTrdDigi >::SendData
void SendData(CbmTrdDigi *digi, CbmMatch *match=nullptr)
Send a digi and the corresponding match object to the DAQ.
Definition: CbmDigitize.h:219
CbmTrdDigitizer::fGasPar
CbmTrdParSetGas * fGasPar
parameter list for HV status
Definition: CbmTrdDigitizer.h:136
CbmTrdDigitizer::IsTimeBased
static Bool_t IsTimeBased()
Definition: CbmTrdDigitizer.h:56
CbmTrdDigitizer::fLastEventTime
Double_t fLastEventTime
time of last event [ns]
Definition: CbmTrdDigitizer.h:122
CbmTrdRawToDigiR
Definition: CbmTrdRawToDigiR.h:17
CbmTrdCheckUtil
Definition: CbmTrdCheckUtil.h:19
CbmMCTrack.h
CbmTrdPoint::GetXIn
Double_t GetXIn() const
Definition: CbmTrdPoint.h:63
CbmMCTrack
Definition: CbmMCTrack.h:34
CbmTrdDigitizer::SetParContainers
virtual void SetParContainers()
Inherited from FairTask.
Definition: CbmTrdDigitizer.cxx:97
CbmTrdDigitizer::fGainPar
CbmTrdParSetGain * fGainPar
parameter list for keV->ADC gain conversion
Definition: CbmTrdDigitizer.h:138
CbmTrdPoint.h
CbmTrdDigitizer::~CbmTrdDigitizer
virtual ~CbmTrdDigitizer()
Destructor.
Definition: CbmTrdDigitizer.cxx:81
CbmTrdModuleSim::MakeDigi
virtual Bool_t MakeDigi(CbmTrdPoint *p, Double_t time, Bool_t TR=kFALSE)=0
Steering routine for converting MC point to digits.
CbmTrdDigi
Definition: CbmTrdDigi.h:14
CbmTrdParSetDigi
Definition: CbmTrdParSetDigi.h:15
CbmTrdDigitizer::AddNoise
static Bool_t AddNoise()
Definition: CbmTrdDigitizer.h:55
CbmTrdParSetGas.h
CbmDigitize< CbmTrdDigi >::RegisterOutput
void RegisterOutput()
Register the output arrays.
Definition: CbmDigitize.h:175
max
friend F32vec4 max(const F32vec4 &a, const F32vec4 &b)
Definition: L1/vectors/P4_F32vec4.h:36
CbmTrdDigitizer::Init
virtual InitStatus Init()
Inherited from FairTask.
Definition: CbmTrdDigitizer.cxx:110
CbmTrdPoint::GetYIn
Double_t GetYIn() const
Definition: CbmTrdPoint.h:64
CbmMCTrack::GetP
Double_t GetP() const
Definition: CbmMCTrack.h:100
CbmTrdModuleSim::SetLinkId
virtual void SetLinkId(Int_t input, Int_t event=-1, Int_t point=-1)
Definition: CbmTrdModuleSim.h:76
CbmTrdModuleSim::SetGamma
virtual void SetGamma(Double_t gamma=0.)=0
CbmTrdModuleSimR
Simulation module implementation for rectangular pad geometry.
Definition: CbmTrdModuleSimR.h:19
CbmTrdCheckUtil::DumpPlots
void DumpPlots()
Definition: CbmTrdCheckUtil.h:56
CbmTrdParModGas
Definition of gas parameters for one TRD module.
Definition: CbmTrdParModGas.h:16
CbmTrdRawToDigiR.h
CbmTrdParModGain
Definition of gain parameters for one TRD module.
Definition: CbmTrdParModGain.h:9
CbmTrdModuleSimT
Simulation module implementation for triangular pad geometry.
Definition: CbmTrdModuleSimT.h:14
CbmTrdDigitizer::Finish
virtual void Finish()
Inherited from FairTask.
Definition: CbmTrdDigitizer.cxx:285
CbmTrdCheckUtil.h
CbmTrdDigitizer::SetTimeBased
static void SetTimeBased(Bool_t set=kTRUE)
Definition: CbmTrdDigitizer.h:89