CbmRoot
Loading...
Searching...
No Matches
CbmTrdDigitizer.h
Go to the documentation of this file.
1/* Copyright (C) 2008-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Florian Uhlig [committer], Andrey Lebedev */
4
14#ifndef CBMTRDDIGITIZER_H_
15#define CBMTRDDIGITIZER_H_
16
17#include "CbmDefs.h" // for ECbmModuleId
18#include "CbmDigitize.h"
19#include "CbmMatch.h"
20#include "CbmTrdCheckUtil.h"
21#include "CbmTrdDigi.h"
22#include "CbmTrdRawToDigiR.h"
23
24#include <map>
25#include <memory>
26
27class TClonesArray;
28
30class CbmTrdParSetGas;
33class CbmTrdParSetGeo;
34class CbmTrdRadiator;
35
36//class CbmTrdDigi;
37//class CbmMatch;
38
39//class CbmTrdGeoHandler;
40class CbmTrdModuleSim;
41
42class CbmTrdDigitizer : public CbmDigitize<CbmTrdDigi> {
43public:
51
56 CbmTrdDigitizer(std::shared_ptr<CbmTrdRadiator> radiator = nullptr);
57
64
68 virtual ~CbmTrdDigitizer();
69 static Bool_t AddNoise() { return TESTBIT(fConfig, kNoise); }
70 static Bool_t IsTimeBased() { return TESTBIT(fConfig, kTime); }
71 static Bool_t UseWeightedDist() { return TESTBIT(fConfig, kWeightDistance); }
72 static Bool_t UseFASP() { return TESTBIT(fConfig, kFASP); }
73
74
76
80 virtual InitStatus Init();
81
85 virtual void SetParContainers();
86
90 virtual void Exec(Option_t* option);
91
95 virtual void Finish();
96
97 static void SetAddNoise(Bool_t set = kTRUE) { set ? SETBIT(fConfig, kNoise) : CLRBIT(fConfig, kNoise); }
98 static void SetUseFASP(Bool_t set = kTRUE) { set ? SETBIT(fConfig, kFASP) : CLRBIT(fConfig, kFASP); }
99 static void SetTimeBased(Bool_t set = kTRUE) { set ? SETBIT(fConfig, kTime) : CLRBIT(fConfig, kTime); }
100 static void SetWeightedDist(Bool_t set = kTRUE)
101 {
103 }
104
105private:
108
112 void FlushBuffers();
118 CbmTrdModuleSim* AddModule(Int_t detId);
122 void ResetCounters();
123
125 virtual void ResetArrays();
126
127 static Int_t fConfig;
128
129 // event info
130 Double_t fLastEventTime;
131
132 // counters
133 Int_t fpoints;
135
136 Float_t fEfficiency;
137
138 TClonesArray* fPoints;
139 TClonesArray* fTracks;
140 std::vector<CbmTrdDigi>* fDigis;
141 std::vector<CbmMatch>* fDigiMatches;
142
149 std::shared_ptr<CbmTrdRadiator> fRadiator = nullptr;
151 std::shared_ptr<CbmTrdRadiator> fRadiator2D = nullptr;
152
155
156 //CbmTrdGeoHandler *fGeoHandler;///< helper to decript geoManager path into proper module type
157 std::map<Int_t, CbmTrdModuleSim*> fModuleMap;
158
159 // Temporary storage for digis.
160 std::map<Int_t, std::pair<CbmTrdDigi*, CbmMatch*>> fDigiMap;
161
163};
164#endif // CBMTRDDIGITIZER_H_
ECbmModuleId
Definition CbmDefs.h:39
@ kTrd
Transition Radiation Detector.
#define SETBIT(n, i)
Definition RTypes.h:15
#define TESTBIT(n, i)
Definition RTypes.h:17
#define CLRBIT(n, i)
Definition RTypes.h:16
Base class template for CBM digitisation tasks.
Definition CbmDigitize.h:44
virtual void Exec(Option_t *option)
Inherited from FairTask.
static Bool_t AddNoise()
static Bool_t UseFASP()
ClassDef(CbmTrdDigitizer, 1)
CbmTrdDigitizer(const CbmTrdDigitizer &)
CbmTrdParSetAsic * fAsicPar
parameter list for ASIC characterization
std::shared_ptr< CbmTrdRadiator > fRadiator2D
parametrization of 2D radiator TR yield
static void SetTimeBased(Bool_t set=kTRUE)
virtual void SetParContainers()
Inherited from FairTask.
CbmTrdRawToDigiR * fConverter
std::map< Int_t, std::pair< CbmTrdDigi *, CbmMatch * > > fDigiMap
virtual InitStatus Init()
Inherited from FairTask.
CbmTrdParSetGas * fGasPar
parameter list for HV status
CbmTrdDigitizer & operator=(const CbmTrdDigitizer &)
void ResetCounters()
Recursive reset all private monitoring counters.
CbmTrdParSetGain * fGainPar
parameter list for keV->ADC gain conversion
virtual void Finish()
Inherited from FairTask.
static void SetAddNoise(Bool_t set=kTRUE)
std::shared_ptr< CbmTrdRadiator > fRadiator
parametrization of radiator TR yield
static Bool_t UseWeightedDist()
Double_t fLastEventTime
time of last event [ns]
CbmTrdModuleSim * AddModule(Int_t detId)
Create module for current MC point.
static void SetUseFASP(Bool_t set=kTRUE)
CbmTrdDigitizer(std::shared_ptr< CbmTrdRadiator > radiator=nullptr)
Constructor.
std::map< Int_t, CbmTrdModuleSim * > fModuleMap
list of modules being processed
Float_t fEfficiency
Digi production efficiency [0..1].
@ kWeightDistance
use weighting distance for link generation
@ kNoise
switch noise digits generation
@ kTime
select Time based/Event by event simulations
@ kFASP
use FASP ASIC for triangular pad plane geometry
TClonesArray * fTracks
MC Track information.
virtual void ResetArrays()
Clear data arrays.
CbmTrdParSetDigi * fDigiPar
parameter list for read-out geometry
std::vector< CbmTrdDigi > * fDigis
Output CbmTrdDigi array.
std::vector< CbmMatch > * fDigiMatches
Output CbmMatch array.
TClonesArray * fPoints
Trd MC points.
CbmTrdCheckUtil * fQA
static void SetWeightedDist(Bool_t set=kTRUE)
ECbmModuleId GetSystemId() const
Detector system ID.
static Bool_t IsTimeBased()
void FlushBuffers()
Flush local digi buffers to CbmDaqBuffer.
CbmTrdParSetGeo * fGeoPar
parameter list for geometry definitions
virtual ~CbmTrdDigitizer()
Destructor.
static Int_t fConfig
Configuration map for the digitizer. See CbmTrdSimDef for details.
Abstract class for module wise digitization and raw format producing.
Describe TRD module ASIC settings (electronic gain, delays, etc)
Describe TRD module working settings (HV, etc)