Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Pierre-Alain Loizeau
cbmroot
Commits
e99296c6
Commit
e99296c6
authored
Nov 04, 2021
by
Alexandru Bercuci
Browse files
update simulation to consider the presence of the radiator in the
geometry
parent
d72a3756
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
81 additions
and
11 deletions
+81
-11
sim/detectors/trd/CbmTrdDigitizer.cxx
sim/detectors/trd/CbmTrdDigitizer.cxx
+34
-0
sim/detectors/trd/CbmTrdDigitizer.h
sim/detectors/trd/CbmTrdDigitizer.h
+1
-0
sim/detectors/trd/CbmTrdModuleSimT.cxx
sim/detectors/trd/CbmTrdModuleSimT.cxx
+24
-10
sim/detectors/trd/CbmTrdModuleSimT.h
sim/detectors/trd/CbmTrdModuleSimT.h
+22
-1
No files found.
sim/detectors/trd/CbmTrdDigitizer.cxx
View file @
e99296c6
...
...
@@ -93,6 +93,7 @@ CbmTrdDigitizer::~CbmTrdDigitizer()
delete
imod
->
second
;
fModuleMap
.
clear
();
if
(
fRadiator2D
)
delete
fRadiator2D
;
delete
fConverter
;
delete
fQA
;
}
...
...
@@ -302,7 +303,40 @@ CbmTrdModuleSim* CbmTrdDigitizer::AddModule(Int_t detId)
<<
"] ly["
<<
lyId
<<
"] det["
<<
detId
<<
"]"
;
CbmTrdModuleSim
*
module
(
NULL
);
if
(
moduleType
>=
9
)
{
// temporary fix for TRD-2Dh @ mCBM 2021
if
(
moduleType
==
10
)
SetUseFASP
(
kFALSE
);
else
SetUseFASP
();
module
=
fModuleMap
[
moduleAddress
]
=
new
CbmTrdModuleSimT
(
moduleAddress
,
lyId
,
orientation
,
UseFASP
());
Int_t
rType
(
-
1
);
if
(
(
rType
=
geoHandler
.
GetRadiatorType
(
path
))
>=
0
)
{
if
(
!
fRadiator2D
)
{
// strong TRD-2D entrance window
// const Char_t *ewin = "Al;C;Air;C;Al";
const
Char_t
*
ewin
=
"Al;C;HC;C;Al"
;
Float_t
widths
[]
=
{
1.2e-3
,
// 12 µm aluminized polyester foil
0.02
,
// carbon laminate sheets of 0.2 mm thickness
0.9
,
// 9mm Nomex honeycom
0.02
,
// carbon laminate sheets of 0.2 mm thickness
1.2e-3
,
// 12 µm aluminized polyester foil
};
// // light TRD-2D entrance window
// const Char_t *ewin = "Al;C;HC;Po;Al";
// Float_t widths[] = {
// 1.2e-3, // 12 µm aluminized polyester foil
// 0.02, // carbon laminate sheets of 0.2 mm thickness
// 0.9, // 9mm Nomex honeycom
// 0.0025, // polyethylen sheets of 50 µm thickness
// 1.2e-3, // 12 µm aluminized polyester foil
// }; pwidth = widths;
fRadiator2D
=
new
CbmTrdRadiator
(
kTRUE
,
"tdr18"
,
ewin
);
fRadiator2D
->
SetEWwidths
(
5
,
widths
);
fRadiator2D
->
Init
();
}
module
->
SetRadiator
(
fRadiator2D
);
}
//((CbmTrdModuleSimT*)module)->SetLabMeasurement();
}
else
{
module
=
fModuleMap
[
moduleAddress
]
=
new
CbmTrdModuleSimR
(
moduleAddress
,
lyId
,
orientation
);
...
...
sim/detectors/trd/CbmTrdDigitizer.h
View file @
e99296c6
...
...
@@ -138,6 +138,7 @@ private:
CbmTrdParSetGain
*
fGainPar
;
///< parameter list for keV->ADC gain conversion
CbmTrdParSetGeo
*
fGeoPar
;
///< parameter list for geometry definitions
CbmTrdRadiator
*
fRadiator
;
///< parametrization of radiator TR yield
CbmTrdRadiator
*
fRadiator2D
;
///< parametrization of 2D radiator TR yield
CbmTrdRawToDigiR
*
fConverter
;
CbmTrdCheckUtil
*
fQA
;
...
...
sim/detectors/trd/CbmTrdModuleSimT.cxx
View file @
e99296c6
...
...
@@ -43,13 +43,14 @@ using namespace std;
//_________________________________________________________________________________
CbmTrdModuleSimT
::
CbmTrdModuleSimT
(
Int_t
mod
,
Int_t
ly
,
Int_t
rot
,
Bool_t
FASP
)
:
CbmTrdModuleSim
(
mod
,
ly
,
rot
)
,
fConfig
(
0
)
,
fTriangleBinning
(
NULL
)
,
fFASP
(
NULL
)
,
fTimeSlice
(
NULL
)
,
fTimeOld
(
0
)
{
SetNameTitle
(
Form
(
"TrdSimT%d"
,
mod
),
"Simulator for triangular read-out."
);
Set
Asic
(
FASP
);
Set
Fasp
(
FASP
);
}
//_________________________________________________________________________________
...
...
@@ -567,10 +568,16 @@ Int_t CbmTrdModuleSimT::FlushBuffer(ULong64_t time)
* are produced by 2 particle close by. Also take into account FASP dead time and mark such digits correspondingly
*/
if
(
!
fFASP
)
{
// Build & configure FASP simulator
fFASP
=
new
CbmTrdFASP
(
1000
);
fFASP
->
SetNeighbourTrigger
(
1
);
fFASP
->
SetLGminLength
(
31
);
if
(
UseFasp
())
{
if
(
!
fFASP
)
{
// Build & configure FASP simulator
fFASP
=
new
CbmTrdFASP
(
1000
);
fFASP
->
SetNeighbourTrigger
(
1
);
fFASP
->
SetLGminLength
(
31
);
}
}
else
{
LOG
(
warn
)
<<
GetName
()
<<
"::FlushBuffer: Module operated with SPADIC. Development in progress."
;
return
0
;
}
if
(
!
fTimeSlice
)
{
FairRootManager
*
ioman
=
FairRootManager
::
Instance
();
...
...
@@ -615,12 +622,16 @@ Int_t CbmTrdModuleSimT::FlushBuffer(ULong64_t time)
// get ASIC channel calibration
Int_t
asicAddress
=
fAsicPar
->
GetAsicAddress
(
localAddress
<<
1
);
if
(
asicAddress
<
0
)
{
LOG
(
warn
)
<<
GetName
()
<<
"::FlushBuffer: FASP Calibration for ro_ch "
<<
localAddress
<<
" in module "
<<
fModAddress
<<
" missing."
;
LOG
(
debug
)
<<
GetName
()
<<
"::FlushBuffer: FASP Calibration for ro_ch "
<<
localAddress
<<
" in module "
<<
fModAddress
<<
" missing."
;
// clear physical digi for which there is no ASIC model available
for
(
auto
iv
=
fBuffer
[
localAddress
].
begin
();
iv
!=
fBuffer
[
localAddress
].
end
();
iv
++
)
delete
(
*
iv
).
first
;
fBuffer
[
localAddress
].
clear
();
}
else
{
LOG
(
debug
)
<<
GetName
()
<<
"::FlushBuffer: Found FASP "
<<
asicAddress
%
1000
<<
" for ro_ch "
<<
localAddress
<<
" in module "
<<
fModAddress
;
LOG
(
debug
2
)
<<
GetName
()
<<
"::FlushBuffer: Found FASP "
<<
asicAddress
%
1000
<<
" for ro_ch "
<<
localAddress
<<
" in module "
<<
fModAddress
;
// fasp = (CbmTrdParFasp*)fAsicPar->GetAsicPar(asicAddress); (VF) not used
//fasp->Print();
// chFasp[0] = fasp->GetChannel(localAddress, 0);
...
...
@@ -659,7 +670,10 @@ Int_t CbmTrdModuleSimT::FlushBuffer(ULong64_t time)
std
::
vector
<
std
::
pair
<
CbmTrdDigi
*
,
CbmMatch
*>>::
iterator
iv
;
while
(
it
!=
fBuffer
.
end
())
{
localAddress
=
it
->
first
;
if
(
!
fBuffer
[
localAddress
].
size
())
continue
;
if
(
!
fBuffer
[
localAddress
].
size
())
{
it
++
;
continue
;
}
digiMatch
=
NULL
;
Int_t
col
(
-
1
),
row
(
-
1
),
srow
,
sec
;
...
...
sim/detectors/trd/CbmTrdModuleSimT.h
View file @
e99296c6
...
...
@@ -17,9 +17,19 @@ class CbmTrdParSetAsic;
**/
class
CbmTrdModuleSimT
:
public
CbmTrdModuleSim
{
public:
enum
ECbmTrdModuleSimT
{
kMeasurement
=
0
///< default simulate setup interactions, if set simulate laboratory measurement, see kLab
,
kLab
///< default simulate 55Fe, if set X-rays, see X-rays spectrum generator
,
kFEE
///< FEE simulator. Default FASP otherwise SPADIC
};
CbmTrdModuleSimT
(
Int_t
mod
,
Int_t
ly
,
Int_t
rot
,
Bool_t
FASP
=
kTRUE
);
virtual
~
CbmTrdModuleSimT
();
Bool_t
IsLabMeasurement
()
const
{
return
TESTBIT
(
fConfig
,
kMeasurement
);
}
Bool_t
IsFeCalib
()
const
{
return
TESTBIT
(
fConfig
,
kLab
);
}
/**
* \brief Flush local buffer of digits which can no longer interact with current event
* \param time current event time or 0 for all
...
...
@@ -41,9 +51,19 @@ public:
void
SetGamma
(
Double_t
/*gamma*/
)
{
;
}
void
SetMessageConverter
(
CbmTrdRawToDigiR
*
conv
=
NULL
)
{
(
void
)
conv
;
}
void
SetQA
(
CbmTrdCheckUtil
*
qa
=
NULL
)
{
(
void
)
qa
;
}
void
SetLabMeasurement
(
Bool_t
set
=
kTRUE
)
{
set
?
SETBIT
(
fConfig
,
kMeasurement
)
:
CLRBIT
(
fConfig
,
kMeasurement
);
SetFeCalib
(
set
);
}
void
SetFeCalib
(
Bool_t
set
=
kTRUE
)
{
set
?
SETBIT
(
fConfig
,
kLab
)
:
CLRBIT
(
fConfig
,
kLab
);}
void
SetAsic
(
Bool_t
/*set*/
)
{
;
}
/**
* \brief Set the FEE type operating on the chamber
* \param[in] set default use FASP/GETS via CbmTrdFASP class. If set to false use SPADIC TODO
**/
void
SetFasp
(
Bool_t
set
=
kTRUE
)
{
set
?
SETBIT
(
fConfig
,
kFEE
)
:
CLRBIT
(
fConfig
,
kFEE
);
}
void
SetAsicPar
(
CbmTrdParSetAsic
*
p
=
NULL
);
Bool_t
UseFasp
()
const
{
return
TESTBIT
(
fConfig
,
kFEE
);
}
private:
CbmTrdModuleSimT
(
const
CbmTrdModuleSimT
&
ref
);
...
...
@@ -75,6 +95,7 @@ private:
**/
void
DumpBuffer
()
const
;
UChar_t
fConfig
;
///< bit map for configuration. See class documentation
CbmTrdTrianglePRF
*
fTriangleBinning
;
///< Integration of PRF on triangular pad-plane geometry
CbmTrdFASP
*
fFASP
;
///< FASP simulator
CbmTimeSlice
*
fTimeSlice
;
///< link to CBM time slice
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment