CbmRoot
CbmStsDigitize.cxx
Go to the documentation of this file.
1 
6 // Include class header
7 #include "CbmStsDigitize.h"
8 
9 // Includes from C++
10 #include <cassert>
11 #include <cstring>
12 #include <fstream>
13 #include <iomanip>
14 #include <iostream>
15 #include <sstream>
16 
17 // Includes from ROOT
18 #include "TClonesArray.h"
19 #include "TGeoBBox.h"
20 #include "TGeoMatrix.h"
21 #include "TGeoPhysicalNode.h"
22 #include "TGeoVolume.h"
23 #include <TMCProcess.h>
24 
25 // Includes from FairRoot
26 #include "FairEventHeader.h"
27 #include "FairField.h"
28 #include "FairLink.h"
29 #include "FairLogger.h"
30 #include "FairMCEventHeader.h"
31 #include "FairMCPoint.h"
32 #include "FairRunAna.h"
33 #include "FairRunSim.h"
34 #include "FairRuntimeDb.h"
35 
36 // Includes from CbmRoot
37 #include "CbmMCTrack.h"
38 #include "CbmStsDigi.h"
39 #include "CbmStsPoint.h"
40 
41 // Includes from STS
42 #include "CbmStsModule.h"
43 #include "CbmStsParSensorCond.h"
44 #include "CbmStsPhysics.h"
45 #include "CbmStsSensor.h"
46 #include "CbmStsSetup.h"
47 #include "CbmStsSimSensorFactory.h"
48 
49 #include "CbmStsParAsic.h"
50 #include "CbmStsParModule.h"
51 #include "CbmStsParSensor.h"
52 #include "CbmStsParSensorCond.h"
53 #include "CbmStsParSetModule.h"
54 #include "CbmStsParSetSensor.h"
55 #include "CbmStsParSetSensorCond.h"
56 #include "CbmStsParSim.h"
57 
58 using std::fixed;
59 using std::left;
60 using std::right;
61 using std::setprecision;
62 using std::setw;
63 using std::string;
64 using std::stringstream;
65 
66 using namespace CbmSts;
67 
68 
69 // ----- Standard constructor ------------------------------------------
71  : CbmDigitize<CbmStsDigi>("StsDigitize")
72  , fIsInitialised(kFALSE)
73  ,
74  //fModuleParameterMap(),
75  fSetup(nullptr)
76  , fPoints(nullptr)
77  , fTracks(nullptr)
78  , fTimer()
79  , fSensorDinact(0.12)
80  , fSensorPitch(0.0058)
81  , fSensorStereoF(0.)
82  , fSensorStereoB(7.5)
83  , fSensorParameterFile()
84  , fSensorConditionFile()
85  , fModuleParameterFile()
86  , fTimePointLast(-1.)
87  , fTimeDigiFirst(-1.)
88  , fTimeDigiLast(-1.) {
89  ResetCounters();
91 }
92 // -------------------------------------------------------------------------
93 
94 
95 // ----- Destructor ----------------------------------------------------
97 // -------------------------------------------------------------------------
98 
99 
100 // ----- Content of analogue buffers -----------------------------------
102  Int_t nSignals = 0;
103  Int_t nSigModule;
104  Double_t t1Module;
105  Double_t t2Module;
106 
107  for (auto& entry : fModules) {
108  entry.second->BufferStatus(nSigModule, t1Module, t2Module);
109  nSignals += nSigModule;
110  } //# modules
111 
112  return nSignals;
113 }
114 // -------------------------------------------------------------------------
115 
116 
117 // ----- Print the status of the analogue buffers ----------------------
119 
120  Int_t nSignals = 0;
121  Double_t t1 = -1;
122  Double_t t2 = -1.;
123 
124  Int_t nSigModule;
125  Double_t t1Module;
126  Double_t t2Module;
127 
128  for (auto& entry : fModules) {
129  entry.second->BufferStatus(nSigModule, t1Module, t2Module);
130  if (nSigModule) {
131  nSignals += nSigModule;
132  t1 = t1 < 0. ? t1Module : TMath::Min(t1, t1Module);
133  t2 = TMath::Max(t2, t2Module);
134  } //? signals in module buffer?
135  } //# modules in setup
136 
137  std::stringstream ss;
138  ss << nSignals << (nSignals == 1 ? " signal " : " signals ")
139  << "in analogue buffers";
140  if (nSignals)
141  ss << " ( from " << fixed << setprecision(3) << t1 << " ns to " << t2
142  << " ns )";
143  return ss.str();
144 }
145 // -------------------------------------------------------------------------
146 
147 
148 // ----- Create a digi object ------------------------------------------
149 void CbmStsDigitize::CreateDigi(Int_t address,
150  UShort_t channel,
151  Long64_t time,
152  UShort_t adc,
153  const CbmMatch& match) {
154 
155  // Update times of first and last digi
157  fNofDigis ? TMath::Min(fTimeDigiFirst, Double_t(time)) : time;
158  fTimeDigiLast = TMath::Max(fTimeDigiLast, Double_t(time));
159 
160  // Create digi and (if required) match and send them to DAQ
161  CbmStsDigi* digi = new CbmStsDigi(address, channel, time, adc);
162  if (fCreateMatches) {
163  CbmMatch* digiMatch = new CbmMatch(match);
164  SendData(digi, digiMatch);
165  } else
166  SendData(digi);
167  fNofDigis++;
168 }
169 // -------------------------------------------------------------------------
170 
171 
172 // ----- Task execution ------------------------------------------------
173 void CbmStsDigitize::Exec(Option_t* /*opt*/) {
174 
175  // --- Start timer and reset counters
176  fTimer.Start();
177  ResetCounters();
178 
179  // --- For debug: status of analogue buffers
180  if (gLogger->IsLogNeeded(fair::Severity::debug)) {
181  std::cout << std::endl;
182  LOG(debug) << GetName() << ": " << BufferStatus();
183  }
184 
185  // --- Store previous event time. Get current event time.
186  Double_t eventTimePrevious = fCurrentEventTime;
187  GetEventInfo();
188 
189  // --- Generate noise from previous to current event time
190  if (fParSim->Noise()) {
191  Int_t nNoise = 0;
192  Double_t tNoiseStart = fNofEvents ? eventTimePrevious : 0.;
193  Double_t tNoiseEnd = fCurrentEventTime;
194  for (auto& entry : fModules)
195  nNoise += entry.second->GenerateNoise(tNoiseStart, tNoiseEnd);
196  fNofNoiseTot += Double_t(nNoise);
197  LOG(info) << "+ " << setw(20) << GetName() << ": Generated " << nNoise
198  << " noise signals from t = " << tNoiseStart << " ns to "
199  << tNoiseEnd << " ns";
200  }
201 
202  // --- Analogue response: Process the input array of StsPoints
203  ProcessMCEvent();
204  LOG(debug) << GetName() << ": " << fNofSignalsF + fNofSignalsB
205  << " signals generated ( " << fNofSignalsF << " / " << fNofSignalsB
206  << " )";
207  // --- For debug: status of analogue buffers
208  if (gLogger->IsLogNeeded(fair::Severity::debug)) {
209  LOG(debug) << GetName() << ": " << BufferStatus();
210  }
211 
212  // --- Readout time: in stream mode the time of the current event.
213  // --- Analogue buffers will be digitised for signals at times smaller than
214  // --- that time minus a safety margin depending on the module properties
215  // --- (dead time and time resolution). In event mode, the readout time
216  // --- is set to -1., meaning to digitise everything in the readout buffers.
217  Double_t readoutTime = fEventMode ? -1. : fCurrentEventTime;
218 
219  // --- Digital response: Process buffers of all modules
220  ProcessAnalogBuffers(readoutTime);
221 
222  // --- Check status of analogue module buffers
223  if (gLogger->IsLogNeeded(fair::Severity::debug)) {
224  LOG(debug) << GetName() << ": " << BufferStatus();
225  }
226 
227  // --- Event log
228  LOG(info) << left << setw(15) << GetName() << "[" << fixed << setprecision(3)
229  << fTimer.RealTime() << " s]"
230  << " Points: processed " << fNofPointsProc << ", ignored "
231  << fNofPointsIgno << ", signals: " << fNofSignalsF << " / "
232  << fNofSignalsB << ", digis: " << fNofDigis;
233 
234  // --- Counters
235  fTimer.Stop();
236  fNofEvents++;
242  fTimeTot += fTimer.RealTime();
243 }
244 // -------------------------------------------------------------------------
245 
246 
247 // ----- Finish run ---------------------------------------------------
249 
250  // --- Start timer and reset counters
251  fTimer.Start();
252  ResetCounters();
253 
254  // --- In event-by-event mode, the analogue buffers should be empty.
255  if (fEventMode) {
256  if (BufferSize()) {
257  LOG(info) << fName << BufferStatus();
258  LOG(fatal) << fName << ": Non-empty analogue buffers at end of event "
259  << " in event-by-event mode!";
260  } //? buffers not empty
261  } //? event-by-event mode
262 
263  // --- In time-based mode: process the remaining signals in the buffers
264  else {
265  std::cout << std::endl;
266  LOG(info) << GetName() << ": Finish run";
267  LOG(info) << GetName() << ": " << BufferStatus();
268  LOG(info) << GetName() << ": Processing analogue buffers";
269 
270  // --- Process buffers of all modules
271  for (auto& entry : fModules)
272  entry.second->ProcessAnalogBuffer(-1.);
273 
274  // --- Screen output
275  stringstream ss;
276  ss << GetName() << ": " << fNofDigis
277  << (fNofDigis == 1 ? " digi " : " digis ") << "created and sent to DAQ ";
278  if (fNofDigis)
279  ss << "( from " << fixed << setprecision(3) << fTimeDigiFirst << " ns to "
280  << fTimeDigiLast << " ns )";
281  LOG(info) << ss.str();
282  LOG(info) << GetName() << ": " << BufferStatus();
283  }
284 
285  fTimer.Stop();
291  fTimeTot += fTimer.RealTime();
292 
293  std::cout << std::endl;
294  LOG(info) << "=====================================";
295  LOG(info) << GetName() << ": Run summary";
296  LOG(info) << "Events processed : " << fNofEvents;
297  LOG(info) << "Points processed / evt : " << fixed << setprecision(1)
298  << fNofPointsProcTot / Double_t(fNofEvents);
299  LOG(info) << "Points ignored / evt : " << fixed << setprecision(1)
300  << fNofPointsIgnoTot / Double_t(fNofEvents);
301  LOG(info) << "Signals / event : "
302  << fNofSignalsFTot / Double_t(fNofEvents) << " / "
303  << fNofSignalsBTot / Double_t(fNofEvents);
304  LOG(info) << "StsDigi / event : "
305  << fNofDigisTot / Double_t(fNofEvents);
306  LOG(info) << "Digis per point : " << setprecision(6)
308  LOG(info) << "Digis per signal : "
310  LOG(info) << "Noise digis / event : "
311  << fNofNoiseTot / Double_t(fNofEvents);
312  LOG(info) << "Noise fraction : " << fNofNoiseTot / fNofDigisTot;
313  LOG(info) << "Real time per event : " << fTimeTot / Double_t(fNofEvents)
314  << " s";
315  LOG(info) << "=====================================";
316 }
317 // -------------------------------------------------------------------------
318 
319 
320 // ----- Get parameter container from runtime DB -----------------------
322  assert(FairRunAna::Instance());
323  FairRuntimeDb* rtdb = FairRunAna::Instance()->GetRuntimeDb();
324  fParSim = static_cast<CbmStsParSim*>(rtdb->getContainer("CbmStsParSim"));
325  fParSetModule =
326  static_cast<CbmStsParSetModule*>(rtdb->getContainer("CbmStsParSetModule"));
327  fParSetSensor =
328  static_cast<CbmStsParSetSensor*>(rtdb->getContainer("CbmStsParSetSensor"));
329  fParSetCond = static_cast<CbmStsParSetSensorCond*>(
330  rtdb->getContainer("CbmStsParSetSensorCond"));
331 }
332 // -------------------------------------------------------------------------
333 
334 
335 // ----- Initialisation -----------------------------------------------
336 InitStatus CbmStsDigitize::Init() {
337 
338  // Screen output
339  std::cout << std::endl;
340  LOG(info) << "==========================================================";
341  LOG(info) << GetName() << ": Initialisation \n\n";
342 
343  // Initialise the STS setup interface from TGeoManager
345  fSetup->Init();
346 
347  // --- Instantiate StsPhysics
349 
350  // --- Initialise parameters
351  InitParams();
352 
353  // Instantiate modules
354  UInt_t nModules = InitModules();
355  LOG(info) << GetName() << ": Created " << nModules << " modules";
356 
357  // Instantiate sensors
358  UInt_t nSensors = InitSensors();
359  LOG(info) << GetName() << ": Created " << nSensors << " sensors";
360 
361 
362  // --- Get FairRootManager instance
363  FairRootManager* ioman = FairRootManager::Instance();
364  assert(ioman);
365 
366  // --- Get input array (CbmStsPoint)
367  fPoints = (TClonesArray*) ioman->GetObject("StsPoint");
368  assert(fPoints);
369 
370  // --- Get input array (CbmMCTrack)
371  fTracks = (TClonesArray*) ioman->GetObject("MCTrack");
372  assert(fTracks);
373 
374  RegisterOutput();
375 
376  // --- Screen output
377  LOG(info) << GetName() << ": Initialisation successful";
378  LOG(info) << "==========================================================";
379  std::cout << std::endl;
380 
381  // Set static initialisation flag
382  fIsInitialised = kTRUE;
383 
384  return kSUCCESS;
385 }
386 // -------------------------------------------------------------------------
387 
388 
389 // ----- Instantiation of modules --------------------------------------
391 
392  UInt_t nModules = 0;
393  fModules.clear();
394 
395  for (Int_t iModule = 0; iModule < fSetup->GetNofModules(); iModule++) {
396  CbmStsElement* geoModule = fSetup->GetModule(iModule);
397  assert(geoModule);
398  UInt_t address = geoModule->GetAddress();
399  auto& modulePar = fParSetModule->GetParModule(address);
400  CbmStsSimModule* module = new CbmStsSimModule(geoModule, &modulePar, this);
401  auto result = fModules.insert({address, module});
402  assert(result.second); // If false, module was already in map
403  nModules++;
404  } //# modules in setup
405 
406  assert(nModules == fModules.size());
407  return nModules;
408 }
409 // -------------------------------------------------------------------------
410 
411 
412 // ----- Initialise parameters -----------------------------------------
414 
415  // --- The parameter containers are completely initialised here.
416  // --- Any contents possibly obtained from the runtimeDb are ignored
417  // --- and overwritten.
418 
419  // --- Simulation settings
420  assert(fParSim);
421  assert(fUserParSim);
422  *fParSim = *fUserParSim; // adapt user settings
423  fParSim->SetEventMode(fEventMode); // from CbmDigitizeBase
424  fParSim->SetGenerateNoise(fProduceNoise); // from CbmDigitizeBase
425  /* fParSim->SetProcesses(fUserParSim->ELossModel(),
426  fUserParSim->LorentzShift(),
427  fUserParSim->Diffusion(),
428  fUserParSim->CrossTalk());
429  */
430  if (fEventMode) fParSim->SetGenerateNoise(kFALSE);
431  fParSim->setChanged();
432  fParSim->setInputVersion(-2, 1);
433  LOG(info) << "--- Settings: " << fParSim->ToString();
434 
435  // --- Module parameters (global for the time being)
436  assert(fParSetModule);
437  fParSetModule->clear();
438  assert(fUserParModule);
439  assert(fUserParAsic);
442  fParSetModule->setChanged();
443  fParSetModule->setInputVersion(-2, 1);
444  LOG(info) << "--- Using global ASIC parameters: \n "
445  << fUserParAsic->ToString();
446  LOG(info) << "--- Module parameters: " << fParSetModule->ToString();
447 
448  // --- Sensor parameters
449  // TODO: The code above is highly unsatisfactory. A better implementation
450  // would use data sheets with the actual sensor design parameters.
451  assert(fParSetSensor);
452  fParSetSensor->clear();
453  assert(fUserParSensor);
454  for (Int_t iSensor = 0; iSensor < fSetup->GetNofSensors(); iSensor++) {
455  CbmStsSensor* sensor = fSetup->GetSensor(iSensor);
456  UInt_t address = sensor->GetAddress();
457  TGeoBBox* box = dynamic_cast<TGeoBBox*>(sensor->GetPnode()->GetShape());
458  assert(box);
459  Double_t lX = 2. * box->GetDX();
460  Double_t lY = 2. * box->GetDY();
461  Double_t lZ = 2. * box->GetDZ();
462  Double_t dX = lX - 2. * fUserDinactive;
463  Double_t dY = lY - 2. * fUserDinactive;
464 
465  // In general, the number of strips is given by the active size in x
466  // divided by the strip pitch.
467  Double_t pitchF = fUserParSensor->GetPar(6);
468  Double_t pitchB = fUserParSensor->GetPar(7);
469  Double_t nStripsF = dX / pitchF;
470  Double_t nStripsB = dX / pitchB;
471 
472  // The stereo sensors with 6.2092 cm width have 1024 strips à 58 mum.
474  && TMath::Abs(lX - 6.2092) < 0.0001
475  && TMath::Abs(pitchF - 0.0058) < 0.0001) {
476  nStripsF = 1024.;
477  nStripsB = 1024.;
478  }
479 
480  // Same for sensors with 6.2000 cm width
482  && TMath::Abs(lX - 6.2) < 0.0001
483  && TMath::Abs(pitchF - 0.0058) < 0.0001) {
484  nStripsF = 1024.;
485  nStripsB = 1024.;
486  }
487 
488  // Create a sensor parameter object and add it to the container
490  par.SetPar(0, lX); // Extension in x
491  par.SetPar(1, lY); // Extension in y
492  par.SetPar(2, lZ); // Extension in z
493  par.SetPar(3, dY); // Active size in y
494  par.SetPar(4, nStripsF); // Number of strips front side
495  par.SetPar(5, nStripsB); // Number of strips back side
496  for (UInt_t parIndex = 6; parIndex < 10; parIndex++) {
497  par.SetPar(parIndex, fUserParSensor->GetPar(parIndex));
498  } //# parameters 6 - 9 (pitches and stereo angles) set by user or default
499  fParSetSensor->SetParSensor(address, par);
500 
501  } //# sensors in setup
502  LOG(info) << "--- Sensor parameters: " << fParSetSensor->ToString();
503  fParSetSensor->setChanged();
504  fParSetSensor->setInputVersion(-2, 1);
505 
506  // --- Sensor conditions
507  assert(fParSetCond);
508  fParSetCond->clear();
510  LOG(info) << "--- Sensor conditions: " << fParSetCond->ToString();
511  fParSetCond->setChanged();
512  fParSetCond->setInputVersion(-2, 1);
513 }
514 // -------------------------------------------------------------------------
515 
516 
517 // ----- Instantiation of sensors --------------------------------------
519 
520  UInt_t nSensors = 0;
521  fSensors.clear();
522 
524  for (Int_t iSensor = 0; iSensor < fSetup->GetNofSensors(); iSensor++) {
525 
526  // --- Sensor and module elements in setup
527  CbmStsElement* geoSensor = fSetup->GetSensor(iSensor);
528  assert(geoSensor); // Valid geo sensor
529  UInt_t sensAddress = geoSensor->GetAddress();
530  CbmStsElement* geoModule = geoSensor->GetMother();
531  assert(geoModule); // Valid geo mother module
532  UInt_t moduAddress = geoModule->GetAddress();
533 
534  // --- Simulation module
535  auto moduIt = fModules.find(moduAddress);
536  assert(moduIt != fModules.end());
537  assert(moduIt->second); // Valid sim module
538 
539  // --- Sensor parameters
540  const CbmStsParSensor& sensorPar = fParSetSensor->GetParSensor(sensAddress);
541 
542  // --- Create simulation sensor accordoing to its class
543  auto result = fSensors.insert(
544  std::make_pair(sensAddress, fSensorFactory->CreateSensor(sensorPar)));
545  assert(result.second); // If false, sensor was already in map
546  auto& sensor = result.first->second;
547  assert(sensor); // Valid sensor pointer
548 
549  // Assign setup element and module
550  sensor->SetElement(geoSensor);
551  sensor->SetModule(moduIt->second);
552 
553  // Assign simulation settings
554  sensor->SetSimSettings(fParSim);
555 
556  // Set sensor conditions
557  assert(fParSetCond);
558  const CbmStsParSensorCond& cond = fParSetCond->GetParSensor(sensAddress);
559  sensor->SetConditions(&cond);
560 
561  // Get the magnetic field in the sensor centre
562  Double_t bx = 0.;
563  Double_t by = 0.;
564  Double_t bz = 0.;
565  if (FairRun::Instance()->GetField()) {
566  Double_t local[3] = {0., 0., 0.}; // sensor centre in local C.S.
567  Double_t global[3]; // sensor centre in global C.S.
568  geoSensor->GetPnode()->GetMatrix()->LocalToMaster(local, global);
569  Double_t field[3] = {0., 0., 0.}; // magnetic field components
570  FairRun::Instance()->GetField()->Field(global, field);
571  bx = field[0] / 10.; // kG->T
572  by = field[1] / 10.; // kG->T
573  bz = field[2] / 10.; // kG->T
574  } //? field present
575  sensor->SetField(bx, by, bz);
576 
577  // Initialise sensor
578  assert(sensor->Init());
579 
580  nSensors++;
581  } //# sensors in setup
582 
583  assert(nSensors == fSensors.size());
584  return nSensors;
585 }
586 // -------------------------------------------------------------------------
587 
588 
589 // ----- Initialisation of setup --------------------------------------
591 
592  // Initialise the STS setup interface from TGeoManager
594  fSetup->Init();
595 
596  // Set parameters to modules and sensor
600 
601  // Individual configuration
602  //fSetup->SetModuleParameterMap(fModuleParameterMap);
603 }
604 // -------------------------------------------------------------------------
605 
606 
607 // ----- Process the analogue buffers of all modules -------------------
608 void CbmStsDigitize::ProcessAnalogBuffers(Double_t readoutTime) {
609 
610  // --- Process analogue buffers of all modules
611  for (auto& it : fModules)
612  it.second->ProcessAnalogBuffer(readoutTime);
613 }
614 // -------------------------------------------------------------------------
615 
616 
617 // ----- Process points from MC event ---------------------------------
619 
620  // --- Loop over all StsPoints and execute the ProcessPoint method
621  assert(fPoints);
622  for (Int_t iPoint = 0; iPoint < fPoints->GetEntriesFast(); iPoint++) {
623  const CbmStsPoint* point = (const CbmStsPoint*) fPoints->At(iPoint);
624  CbmLink* link = new CbmLink(1., iPoint, fCurrentMCEntry, fCurrentInput);
625 
626  // --- Ignore points from secondaries if the respective flag is set
627  if (fParSim->OnlyPrimaries()) {
628  Int_t iTrack = point->GetTrackID();
629  if (iTrack >= 0) { // MC track is present
630  CbmMCTrack* track = (CbmMCTrack*) fTracks->At(iTrack);
631  assert(track);
632  if (track->GetGeantProcessId() != kPPrimary) {
633  fNofPointsIgno++;
634  continue;
635  }
636  } //? MC track present
637  } //? discard secondaries
638 
639  ProcessPoint(point, fCurrentEventTime, link);
640  fNofPointsProc++;
641  delete link;
642  } //# StsPoints
643 }
644 // -------------------------------------------------------------------------
645 
646 
647 // ----- Process a StsPoint ---------------------------------------------
649  Double_t eventTime,
650  CbmLink* link) {
651 
652  // --- Get the sensor the point is in
653  UInt_t address = static_cast<UInt_t>(point->GetDetectorID());
654  assert(fSensors.count(address));
655  auto& sensor = fSensors.find(address)->second;
656  assert(sensor);
657  Int_t status = sensor->ProcessPoint(point, eventTime, link);
658 
659  // --- Statistics
660  Int_t nSignalsF = status / 1000;
661  Int_t nSignalsB = status - 1000 * nSignalsF;
662  LOG(debug2) << GetName() << ": Produced signals: " << nSignalsF + nSignalsB
663  << " ( " << nSignalsF << " / " << nSignalsB << " )";
664  fNofSignalsF += nSignalsF;
665  fNofSignalsB += nSignalsB;
666 }
667 // -------------------------------------------------------------------------
668 
669 
670 // ----- Private method ReInit -----------------------------------------
672 
674 
675  return kERROR;
676 }
677 // -------------------------------------------------------------------------
678 
679 
680 // ----- Reset event counters ------------------------------------------
683  fNofPointsProc = 0;
684  fNofPointsIgno = 0;
685  fNofSignalsF = 0;
686  fNofSignalsB = 0;
687  fNofDigis = 0;
688 }
689 // -------------------------------------------------------------------------
690 
691 
692 // ----- Global default values for parameters --------------------------
694 
695  // The global default values cannot be directly stored in the parameter
696  // containers, since these are not yet initialised from the database.
697 
698  // --- Protect against setting after initialisation
699  assert(!fIsInitialised);
700 
701  // --- Simulation settings
702  if (fUserParSim) delete fUserParSim;
703  fUserParSim = new CbmStsParSim();
704  Bool_t eventMode = kFALSE;
705  CbmStsELoss eLossModel = CbmStsELoss::kUrban;
706  Bool_t lorentzShift = kTRUE;
707  Bool_t diffusion = kTRUE;
708  Bool_t crossTalk = kTRUE;
709  Bool_t generateNoise = kTRUE;
710  fUserParSim->SetEventMode(eventMode);
711  fUserParSim->SetProcesses(eLossModel, lorentzShift, diffusion, crossTalk);
712  fUserParSim->SetGenerateNoise(generateNoise);
713  // Note that the run mode and the generation of noise are centrally set
714  // through the base class CbmDigitizeBase, such that the settings here
715  // will be overwritten later (in Init).
716 
717  // --- ASIC parameters
718  if (fUserParAsic) delete fUserParAsic;
719  UInt_t nAdc = 32; // Number of ADC channels (5 bit)
720  Double_t dynRange = 75000.; // Dynamic range [e]
721  Double_t threshold = 3000.; // Threshold [e]
722  Double_t timeResol = 5.; // Time resolution [ns]
723  Double_t deadTime = 800.; // Channel dead time [ns]
724  Double_t noiseRms = 1000.; // RMS of noise [e]
725  Double_t znr = 3.9789e-3; // Zero-crossing noise rate [1/ns]
727  nAdc, dynRange, threshold, timeResol, deadTime, noiseRms, znr);
728 
729  // --- Module parameters
730  if (fUserParModule) delete fUserParModule;
731  UInt_t nChannels = 2048; // Number of module readout channels
732  UInt_t nAsicChannels = 128; // Number of readout channels per ASIC
733  fUserParModule = new CbmStsParModule(nChannels, nAsicChannels);
734 
735  // --- Sensor parameters
736  // --- Here, only the default pitch and stereo angles are defined. The
737  // --- other parameters are extracted from the geometry.
738  if (fUserParSensor) delete fUserParSensor;
740  fUserParSensor = new CbmStsParSensor(sClass);
741  Double_t pitchF = 0.0058; // Strip pitch front side
742  Double_t pitchB = 0.0058; // Strip pitch back side
743  Double_t stereoF = 0.; // Stereo angle front side
744  Double_t stereoB = 7.5; // Stereo angle back side [deg]
745  fUserParSensor->SetPar(6, pitchF);
746  fUserParSensor->SetPar(7, pitchB);
747  fUserParSensor->SetPar(8, stereoF);
748  fUserParSensor->SetPar(9, stereoB);
749  fUserDinactive = 0.12; // Size of inactive sensor border [cm]
750 
751  // --- Sensor conditions
752  if (fUserParCond) delete fUserParCond;
753  Double_t vFd = 70.; // Full-depletion voltage
754  Double_t vBias = 140.; // Bias voltage
755  Double_t temperature = 268.; // Temperature
756  Double_t cCoupling = 17.5; // Coupling capacitance [pF]
757  Double_t cInterstrip = 1.; // Inter-strip capacitance
758  fUserParCond =
759  new CbmStsParSensorCond(vFd, vBias, temperature, cCoupling, cInterstrip);
760 }
761 // -------------------------------------------------------------------------
762 
763 
764 // ----- Set the global module parameters ------------------------------
766  Double_t dynRange,
767  Double_t threshold,
768  Double_t timeResolution,
769  Double_t deadTime,
770  Double_t noise,
771  Double_t zeroNoiseRate) {
772  assert(!fIsInitialised);
773  assert(nAdc > 0);
774  if (fUserParAsic) delete fUserParAsic;
776  nAdc, dynRange, threshold, timeResolution, deadTime, noise, zeroNoiseRate);
777 }
778 // -------------------------------------------------------------------------
779 
780 
781 // ----- Set the global module parameters ------------------------------
783  UInt_t nAsicChannels) {
784  assert(!fIsInitialised);
785 
786  if (fUserParModule) delete fUserParModule;
787  fUserParModule = new CbmStsParModule(nChannels, nAsicChannels);
788 }
789 // -------------------------------------------------------------------------
790 
791 
792 // ----- Set the global sensor conditions ------------------------------
794  Double_t vBias,
795  Double_t temperature,
796  Double_t cCoupling,
797  Double_t cInterstrip) {
798  assert(!fIsInitialised);
799 
800  if (fUserParCond) delete fUserParCond;
801  fUserParCond =
802  new CbmStsParSensorCond(vFd, vBias, temperature, cCoupling, cInterstrip);
803 }
804 // -------------------------------------------------------------------------
805 
806 
807 // ----- Set sensor parameter file -------------------------------------
808 void CbmStsDigitize::SetModuleParameterFile(const char* fileName) {
809 
810  assert(!fIsInitialised);
811  fModuleParameterFile = fileName;
812 }
813 // -------------------------------------------------------------------------
814 
815 
816 // ----- Set physical processes for the analogue response ---------------
818  Bool_t useLorentzShift,
819  Bool_t useDiffusion,
820  Bool_t useCrossTalk) {
821  if (fIsInitialised) {
822  LOG(error) << GetName() << ": physics processes must be set before "
823  << "initialisation! Statement will have no effect.";
824  return;
825  }
826 
828  eLossModel, useLorentzShift, useDiffusion, useCrossTalk);
829 }
830 // -------------------------------------------------------------------------
831 
832 
833 // ----- Set sensor condition file -------------------------------------
834 void CbmStsDigitize::SetSensorConditionFile(const char* fileName) {
835 
836  if (fIsInitialised) {
837  LOG(fatal) << GetName()
838  << ": sensor conditions must be set before initialisation!";
839  return;
840  }
841  fSensorConditionFile = fileName;
842 }
843 // -------------------------------------------------------------------------
844 
845 
846 // ----- Set sensor parameter file -------------------------------------
847 void CbmStsDigitize::SetSensorParameterFile(const char* fileName) {
848 
849  if (fIsInitialised) {
850  LOG(fatal) << GetName()
851  << ": sensor parameters must be set before initialisation!";
852  return;
853  }
854  fSensorParameterFile = fileName;
855 }
856 // -------------------------------------------------------------------------
857 
858 
859 // ----- Usage of primary tracks only ----------------------------------
862 }
863 // -------------------------------------------------------------------------
864 
CbmStsElement::GetAddress
Int_t GetAddress() const
Definition: CbmStsElement.h:65
CbmMatch
Definition: CbmMatch.h:22
CbmStsDigitize::InitSensors
UInt_t InitSensors()
Instantiate sensors.
Definition: CbmStsDigitize.cxx:518
CbmStsParSetSensor::clear
virtual void clear()
Reset all parameters.
Definition: CbmStsParSetSensor.cxx:31
CbmStsDigitize::fModules
std::map< UInt_t, CbmStsSimModule * > fModules
Definition: CbmStsDigitize.h:244
CbmStsParSetSensor.h
CbmStsDigitize::fSensorConditionFile
TString fSensorConditionFile
File with sensor conditions.
Definition: CbmStsDigitize.h:271
CbmStsDigitize::fTimeDigiLast
Double_t fTimeDigiLast
Time of last digi sent to DAQ.
Definition: CbmStsDigitize.h:279
CbmStsSimSensorFactory.h
CbmDigitizeBase::GetEventInfo
void GetEventInfo()
Get event information.
Definition: CbmDigitizeBase.cxx:48
CbmSts
Definition: CbmStsDefs.h:15
CbmStsSetup.h
CbmDigitizeBase::fCreateMatches
Bool_t fCreateMatches
Flag for production of inter-event noise.
Definition: CbmDigitizeBase.h:161
CbmStsELoss::kUrban
@ kUrban
CbmStsDigitize::SetGlobalAsicParams
void SetGlobalAsicParams(UInt_t nAdc, Double_t dynRange, Double_t threshold, Double_t timeResolution, Double_t deadTime, Double_t noise, Double_t zeroNoiseRate)
Set individual module parameters.
Definition: CbmStsDigitize.cxx:765
CbmStsDigitize::fTracks
TClonesArray * fTracks
Input array of CbmMCTrack.
Definition: CbmStsDigitize.h:240
CbmStsDigitize::fSensorParameterFile
TString fSensorParameterFile
File with sensor parameters.
Definition: CbmStsDigitize.h:270
CbmStsSetup::SetSensorConditions
UInt_t SetSensorConditions(CbmStsParSetSensorCond *conds)
Set sensor conditions from parameter container.
Definition: CbmStsSetup.cxx:470
CbmStsParSetSensor::ToString
std::string ToString() const
Info to string.
Definition: CbmStsParSetSensor.cxx:76
CbmStsParModule::SetAllAsics
void SetAllAsics(const CbmStsParAsic &asicPar)
Set all ASICs with the same parameter set.
Definition: CbmStsParModule.cxx:49
CbmStsDigitize::fIsInitialised
Bool_t fIsInitialised
kTRUE if Init() was called
Definition: CbmStsDigitize.h:234
CbmStsParSensorCond
Parameters for operating conditions of a STS sensor.
Definition: CbmStsParSensorCond.h:28
CbmStsDigitize::fNofDigis
Int_t fNofDigis
Number of created digis in Exec.
Definition: CbmStsDigitize.h:286
CbmStsDigitize::fUserParSim
CbmStsParSim * fUserParSim
Settings for simulation.
Definition: CbmStsDigitize.h:250
CbmStsDigitize::BufferSize
Int_t BufferSize() const
Number of signals in the analogue buffers @value nSignals Sum of number of signals in all modules.
Definition: CbmStsDigitize.cxx:101
CbmStsDigitize::fUserParModule
CbmStsParModule * fUserParModule
User defined, global.
Definition: CbmStsDigitize.h:252
CbmStsSetup::Instance
static CbmStsSetup * Instance()
Definition: CbmStsSetup.cxx:293
CbmStsDigitize
Task class for simulating the detector response of the STS.
Definition: CbmStsDigitize.h:50
CbmDigitizeBase::fCurrentMCEntry
Int_t fCurrentMCEntry
Number of current MC event.
Definition: CbmDigitizeBase.h:164
CbmStsDigitize.h
CbmStsParSensor::GetClass
CbmStsSensorClass GetClass() const
Get the sensor class.
Definition: CbmStsParSensor.h:56
CbmStsDigitize::fNofEvents
Int_t fNofEvents
Total number of procesed events.
Definition: CbmStsDigitize.h:289
CbmStsDigitize::ProcessAnalogBuffers
void ProcessAnalogBuffers(Double_t readoutTime)
Definition: CbmStsDigitize.cxx:608
CbmStsDigitize::fParSetSensor
CbmStsParSetSensor * fParSetSensor
Sensor parameters.
Definition: CbmStsDigitize.h:260
CbmStsSetup::SetSensorParameters
UInt_t SetSensorParameters(CbmStsParSetSensor *parSet)
Set sensor parameters from parameter container.
Definition: CbmStsSetup.cxx:486
CbmStsDigitize::fNofSignalsB
Int_t fNofSignalsB
Number of signals on back side.
Definition: CbmStsDigitize.h:285
CbmStsDigitize::fUserParSensor
CbmStsParSensor * fUserParSensor
User defined, global.
Definition: CbmStsDigitize.h:253
CbmStsDigitize::fNofPointsProc
Int_t fNofPointsProc
Number of processed points.
Definition: CbmStsDigitize.h:282
CbmStsDigitize::fNofSignalsF
Int_t fNofSignalsF
Number of signals on front side.
Definition: CbmStsDigitize.h:284
CbmStsParSensor.h
CbmStsParSetSensorCond::SetGlobalPar
void SetGlobalPar(Double_t vDep, Double_t vBias, Double_t temperature, Double_t cCoupling, Double_t cInterstrip)
Set global conditions (for all sensors)
Definition: CbmStsParSetSensorCond.cxx:182
CbmStsDigitize::fPoints
TClonesArray * fPoints
Sensor factory.
Definition: CbmStsDigitize.h:239
CbmStsDigitize::SetSensorConditionFile
void SetSensorConditionFile(const char *fileName)
Set the file name with sensor conditions.
Definition: CbmStsDigitize.cxx:834
CbmStsDigitize::ResetCounters
void ResetCounters()
Reset event counters.
Definition: CbmStsDigitize.cxx:681
CbmStsParSim::ToString
std::string ToString() const
String output.
Definition: CbmStsParSim.cxx:47
CbmStsParSetSensorCond::clear
virtual void clear()
Reset all parameters.
Definition: CbmStsParSetSensorCond.cxx:37
CbmStsDigitize::~CbmStsDigitize
virtual ~CbmStsDigitize()
Definition: CbmStsDigitize.cxx:96
CbmStsParSensorCond.h
CbmStsPoint
Definition: CbmStsPoint.h:27
CbmStsPhysics::Instance
static CbmStsPhysics * Instance()
Accessor to singleton instance.
Definition: CbmStsPhysics.cxx:155
CbmStsParSetSensor::SetParSensor
void SetParSensor(UInt_t address, const CbmStsParSensor &par)
Set the parameters for a sensor.
Definition: CbmStsParSetSensor.cxx:65
CbmStsParSetModule::GetParModule
const CbmStsParModule & GetParModule(UInt_t address)
Get condition parameters of a sensor.
Definition: CbmStsParSetModule.cxx:49
CbmStsDigitize::InitSetup
void InitSetup()
Definition: CbmStsDigitize.cxx:590
CbmStsDigitize::ProcessMCEvent
void ProcessMCEvent()
Definition: CbmStsDigitize.cxx:618
CbmStsParSetModule.h
CbmStsElement::GetPnode
TGeoPhysicalNode * GetPnode() const
Definition: CbmStsElement.h:106
CbmStsParSetSensorCond.h
CbmStsParSim.h
CbmStsParSetModule::ToString
std::string ToString() const
Info to string.
Definition: CbmStsParSetModule.cxx:65
CbmStsParSetSensorCond
Parameters container for CbmStsParSensorCond.
Definition: CbmStsParSetSensorCond.h:30
CbmStsDigitize::fNofNoiseTot
Double_t fNofNoiseTot
Total number of noise digis.
Definition: CbmStsDigitize.h:295
CbmStsSensorClass::kDssdStereo
@ kDssdStereo
CbmStsParSensor
Constructional parameters of a STS sensor.
Definition: CbmStsParSensor.h:38
CbmStsDigi.h
CbmStsDigitize::SetParContainers
virtual void SetParContainers()
Inherited from FairTask.
Definition: CbmStsDigitize.cxx:321
CbmStsParSetSensorCond::ToString
std::string ToString()
Info to string.
Definition: CbmStsParSetSensorCond.cxx:209
CbmStsParSetSensor::GetParSensor
const CbmStsParSensor & GetParSensor(UInt_t address)
Get condition parameters of a sensor.
Definition: CbmStsParSetSensor.cxx:49
CbmStsDigitize::fNofPointsProcTot
Double_t fNofPointsProcTot
Total number of processed points.
Definition: CbmStsDigitize.h:290
CbmStsParSim::SetEventMode
void SetEventMode(Bool_t choice=kTRUE)
Set event-by-event simulation mode.
Definition: CbmStsParSim.h:106
CbmStsParSetSensor
Parameters container for CbmStsParSensor.
Definition: CbmStsParSetSensor.h:30
CbmDigitizeBase::fProduceNoise
Bool_t fProduceNoise
Flag for event-by-event mode.
Definition: CbmDigitizeBase.h:160
CbmStsELoss
CbmStsELoss
Energy loss model used in simulation.
Definition: CbmStsDefs.h:43
CbmStsDigitize::BufferStatus
std::string BufferStatus() const
Status of the analogue buffers.
Definition: CbmStsDigitize.cxx:118
CbmDigitize
Base class template for CBM digitisation tasks.
Definition: CbmDigitize.h:39
CbmStsParAsic
Parameters of the STS readout ASIC.
Definition: CbmStsParAsic.h:25
CbmStsSimSensorFactory::CreateSensor
UP_sensor CreateSensor(const CbmStsParSensor &par)
Create a sensor.
Definition: CbmStsSimSensorFactory.cxx:29
CbmStsDigitize::fNofSignalsBTot
Double_t fNofSignalsBTot
Number of signals on back side.
Definition: CbmStsDigitize.h:293
CbmStsDigitize::fNofPointsIgno
Int_t fNofPointsIgno
Number of ignored points.
Definition: CbmStsDigitize.h:283
CbmStsParSim::OnlyPrimaries
Bool_t OnlyPrimaries() const
Process only primary tracks.
Definition: CbmStsParSim.h:88
CbmDigitizeBase::fEventMode
Bool_t fEventMode
Definition: CbmDigitizeBase.h:159
CbmStsParSetModule::clear
virtual void clear()
Reset all parameters.
Definition: CbmStsParSetModule.cxx:31
CbmStsParModule
Parameters for one STS module.
Definition: CbmStsParModule.h:28
CbmStsParModule.h
CbmStsSetup::GetSensor
CbmStsSensor * GetSensor(Int_t index) const
Get a sensor from the sensor array.
Definition: CbmStsSetup.h:78
CbmStsDigitize::fUserDinactive
Double_t fUserDinactive
Size of inactive sensor border [cm].
Definition: CbmStsDigitize.h:255
CbmStsDigitize::SetSensorParameterFile
void SetSensorParameterFile(const char *fileName)
Set the file name with sensor parameters.
Definition: CbmStsDigitize.cxx:847
CbmStsDigitize::fSensors
std::map< UInt_t, std::unique_ptr< CbmStsSimSensor > > fSensors
Definition: CbmStsDigitize.h:247
CbmStsPhysics.h
CbmStsParSim::Noise
Bool_t Noise() const
Check whether inter-event noise is generated.
Definition: CbmStsParSim.h:82
CbmStsDigitize::CreateDigi
void CreateDigi(Int_t address, UShort_t channel, Long64_t time, UShort_t adc, const CbmMatch &match)
Definition: CbmStsDigitize.cxx:149
CbmStsDigitize::fTimer
TStopwatch fTimer
ROOT timer.
Definition: CbmStsDigitize.h:241
CbmStsDigitize::CbmStsDigitize
CbmStsDigitize()
Definition: CbmStsDigitize.cxx:70
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
CbmMCTrack::GetGeantProcessId
UInt_t GetGeantProcessId() const
Definition: CbmMCTrack.h:69
CbmDigitizeBase::fCurrentEventTime
Double_t fCurrentEventTime
Number of current MC entry.
Definition: CbmDigitizeBase.h:165
CbmStsSensor
Class representing an instance of a sensor in the CBM-STS.
Definition: CbmStsSensor.h:38
CbmStsSetup::Init
Bool_t Init(const char *geometryFile=nullptr)
Initialise the setup.
Definition: CbmStsSetup.cxx:201
CbmStsDigi
Data class for a single-channel message in the STS.
Definition: CbmStsDigi.h:29
CbmStsDigitize::fNofDigisTot
Double_t fNofDigisTot
Total number of digis created.
Definition: CbmStsDigitize.h:294
CbmStsDigitize::fSetup
CbmStsSetup * fSetup
Definition: CbmStsDigitize.h:237
CbmStsDigitize::ProcessPoint
void ProcessPoint(const CbmStsPoint *point, Double_t eventTime=0., CbmLink *link=NULL)
Definition: CbmStsDigitize.cxx:648
CbmStsSensorClass
CbmStsSensorClass
Sensor classes.
Definition: CbmStsDefs.h:61
CbmStsDigitize::fParSetModule
CbmStsParSetModule * fParSetModule
Module parameter.
Definition: CbmStsDigitize.h:259
CbmDigitize< CbmStsDigi >::SendData
void SendData(CbmStsDigi *digi, CbmMatch *match=nullptr)
Send a digi and the corresponding match object to the DAQ.
Definition: CbmDigitize.h:219
CbmStsSetup::GetModule
CbmStsModule * GetModule(Int_t index) const
Get a module from the module array.
Definition: CbmStsSetup.h:68
CbmStsDigitize::UseOnlyPrimaries
void UseOnlyPrimaries(Bool_t flag=kTRUE)
Discard processing of secondary tracks.
Definition: CbmStsDigitize.cxx:860
CbmStsDigitize::fUserParCond
CbmStsParSensorCond * fUserParCond
User defined, global.
Definition: CbmStsDigitize.h:254
CbmStsDigitize::SetGlobalDefaults
void SetGlobalDefaults()
Set global default parameters.
Definition: CbmStsDigitize.cxx:693
CbmStsDigitize::fModuleParameterFile
TString fModuleParameterFile
File with module parameters.
Definition: CbmStsDigitize.h:272
CbmStsDigitize::fNofPointsIgnoTot
Double_t fNofPointsIgnoTot
Total number of ignored points.
Definition: CbmStsDigitize.h:291
CbmStsParSim::SetProcesses
void SetProcesses(CbmStsELoss eLossModel, Bool_t useLorentzShift, Bool_t useDiffusion, Bool_t useCrossTalk)
Definition: CbmStsParSim.h:136
CbmStsPoint.h
CbmMCTrack.h
CbmMCTrack
Definition: CbmMCTrack.h:34
CbmStsDigitize::InitModules
UInt_t InitModules()
Instantiate modules.
Definition: CbmStsDigitize.cxx:390
CbmStsDigitize::Exec
virtual void Exec(Option_t *opt)
Definition: CbmStsDigitize.cxx:173
CbmStsParSensor::GetPar
Float_t GetPar(UInt_t index) const
Get a parameter.
Definition: CbmStsParSensor.cxx:22
CbmStsSetup::SetModuleParameters
UInt_t SetModuleParameters(CbmStsParSetModule *modulePars)
Set module parameters from parameter container.
Definition: CbmStsSetup.cxx:455
CbmStsParSim
Settings for STS simulation (digitizer)
Definition: CbmStsParSim.h:25
CbmStsParSim::SetGenerateNoise
void SetGenerateNoise(Bool_t choice=kTRUE)
Activate or de-activate inter-event noise.
Definition: CbmStsParSim.h:115
CbmStsDigitize::SetGlobalModuleParams
void SetGlobalModuleParams(UInt_t nChannels, UInt_t nAsicChannels)
Set the global module parameters.
Definition: CbmStsDigitize.cxx:782
CbmStsDigitize::fTimeDigiFirst
Double_t fTimeDigiFirst
Time of first digi sent to DAQ.
Definition: CbmStsDigitize.h:278
CbmStsDigitize::fUserParAsic
CbmStsParAsic * fUserParAsic
User defined, global.
Definition: CbmStsDigitize.h:251
CbmStsDigitize::Finish
virtual void Finish()
Definition: CbmStsDigitize.cxx:248
CbmStsParSetModule
Parameters container for CbmStsParModule.
Definition: CbmStsParSetModule.h:30
CbmStsParSetModule::SetGlobalPar
void SetGlobalPar(const CbmStsParModule &params)
Set global parameters (for all modules)
Definition: CbmStsParSetModule.h:100
CbmStsDigitize::fParSim
CbmStsParSim * fParSim
Simulation settings.
Definition: CbmStsDigitize.h:258
CbmStsElement::GetMother
CbmStsElement * GetMother() const
Definition: CbmStsElement.h:89
CbmDigitize< CbmStsDigi >::RegisterOutput
void RegisterOutput()
Register the output arrays.
Definition: CbmDigitize.h:175
CbmStsDigitize::fSensorFactory
CbmStsSimSensorFactory * fSensorFactory
STS setup interface.
Definition: CbmStsDigitize.h:238
CbmStsSetup::GetNofSensors
Int_t GetNofSensors() const
Definition: CbmStsSetup.h:86
CbmStsDigitize::InitParams
void InitParams()
Initialise the parameters.
Definition: CbmStsDigitize.cxx:413
CbmStsDigitize::ReInit
virtual InitStatus ReInit()
Definition: CbmStsDigitize.cxx:671
CbmStsSimModule
Class for the simulation of a readout unit in the CBM-STS.
Definition: CbmStsSimModule.h:42
CbmStsDigitize::fTimeTot
Double_t fTimeTot
Total execution time.
Definition: CbmStsDigitize.h:296
CbmStsParSim::SetOnlyPrimaries
void SetOnlyPrimaries(Bool_t choice=kTRUE)
Process only primary tracks.
Definition: CbmStsParSim.h:125
CbmStsDigitize::SetModuleParameterFile
void SetModuleParameterFile(const char *fileName)
Set the file name with module parameters.
Definition: CbmStsDigitize.cxx:808
CbmStsParAsic::ToString
std::string ToString() const
Info to string.
Definition: CbmStsParAsic.cxx:132
CbmStsModule.h
CbmStsSetup::GetNofModules
Int_t GetNofModules() const
Definition: CbmStsSetup.h:82
CbmStsElement
Class representing an element of the STS setup.
Definition: CbmStsElement.h:32
CbmStsDigitize::fNofSignalsFTot
Double_t fNofSignalsFTot
Number of signals on front side.
Definition: CbmStsDigitize.h:292
CbmStsParSetSensorCond::GetParSensor
const CbmStsParSensorCond & GetParSensor(UInt_t address)
Get condition parameters of a sensor.
Definition: CbmStsParSetSensorCond.cxx:57
CbmStsSimSensorFactory
Definition: CbmStsSimSensorFactory.h:30
CbmStsDigitize::Init
virtual InitStatus Init()
Definition: CbmStsDigitize.cxx:336
CbmStsParAsic.h
CbmStsDigitize::fParSetCond
CbmStsParSetSensorCond * fParSetCond
Sensor conditions.
Definition: CbmStsDigitize.h:261
CbmStsDigitize::SetGlobalSensorConditions
void SetGlobalSensorConditions(Double_t vDep, Double_t vBias, Double_t temperature, Double_t cCoupling, Double_t cInterstrip)
Set the global sensor conditions.
Definition: CbmStsDigitize.cxx:793
CbmStsDigitize::SetProcesses
void SetProcesses(CbmStsELoss eLossModel, Bool_t useLorentzShift=kTRUE, Bool_t useDiffusion=kTRUE, Bool_t useCrossTalk=kTRUE)
Definition: CbmStsDigitize.cxx:817
CbmStsParSensor::SetPar
void SetPar(UInt_t index, Float_t value)
Set a parameter.
Definition: CbmStsParSensor.h:83
CbmStsSensor.h