|
ATLAS Offline Software
|
The aim of this algorithm is the simulation of the LAr analogue trigger tower sums.
More...
#include <LArTTL1Maker.h>
|
| LArTTL1Maker (const std::string &name, ISvcLocator *pSvcLocator) |
| constructor More...
|
|
virtual | ~LArTTL1Maker () |
| destructor More...
|
|
virtual StatusCode | initialize () override |
| Read ascii files for auxiliary data (puslse shapes, noise, etc...) More...
|
|
virtual StatusCode | execute () override |
| Create LArTTL1 object save in TES (2 containers: 1 EM, 1 hadronic) More...
|
|
virtual StatusCode | finalize () override |
|
virtual void | handle (const Incident &) override |
|
virtual bool | isClonable () const override final |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
std::vector< float > | computeSignal (const Identifier towerId, const int Ieta, const int specialCase, std::vector< float > visEnergy, const int refTime) const |
| initialize hit map More...
|
|
std::vector< float > | computeNoise (const Identifier towerId, const int Ieta, std::vector< float > &inputV, CLHEP::HepRandomEngine *rndmEngine) |
|
StatusCode | readAuxiliary () |
| method called at the begining of execute() to fill the hit map More...
|
|
int | decodeInverse (int region, int eta) |
|
void | setSeed (const std::string &algName, const EventContext &ctx) |
|
void | setSeed (const std::string &algName, uint64_t ev, uint64_t run) |
|
void | setSeed (size_t seed) |
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
IChronoStatSvc * | m_chronSvc |
|
ServiceHandle< IAthRNGSvc > | m_RandomSvc {this, "RndmSvc", "AthRNGSvc", ""} |
|
Gaudi::Property< std::string > | m_randomStreamName {this, "RandomStreamName", "LArTTL1Maker", ""} |
|
Gaudi::Property< uint32_t > | m_randomSeedOffset {this, "RandomSeedOffset", 2, ""} |
|
Gaudi::Property< bool > | m_useLegacyRandomSeeds |
|
bool | m_useTriggerTime |
| Alorithm property: use trigger time or not. More...
|
|
ToolHandle< ITriggerTime > | m_triggerTimeTool |
| Alorithm property: name of the TriggerTimeTool. More...
|
|
int | m_BeginRunPriority |
|
ToolHandle< CaloTriggerTowerService > | m_ttSvc |
|
const CaloLVL1_ID * | m_lvl1Helper |
| pointer to the offline TT helper More...
|
|
const LArEM_ID * | m_emHelper |
| pointer to the offline EM helper More...
|
|
const LArHEC_ID * | m_hecHelper |
| pointer to the offline HEC helper More...
|
|
const LArFCAL_ID * | m_fcalHelper |
| pointer to the offline FCAL helper More...
|
|
const CaloCell_ID * | m_OflHelper = nullptr |
| pointer to the offline id helper
More...
|
|
SG::ReadCondHandleKey< ILArfSampl > | m_fSamplKey |
| Sampling fractions retrieved from DB. More...
|
|
std::vector< float > | m_refEnergyEm |
| auxiliary EM data: reference energies for saturation simulation More...
|
|
std::vector< std::vector< float > > | m_pulseShapeEm |
| auxiliary EM data: pulse shapes More...
|
|
std::vector< std::vector< float > > | m_pulseShapeDerEm |
| auxiliary EM data: pulse shape derivative More...
|
|
std::vector< float > | m_autoCorrEm |
| auxiliary EM data: auto-correlation matrix More...
|
|
std::vector< float > | m_sinThetaEmb |
| auxiliary EMBarrel data: sin(theta) More...
|
|
std::vector< float > | m_calibCoeffEmb |
| auxiliary EMBarrel data: calibration coefficient More...
|
|
std::vector< float > | m_noiseRmsEmb |
| auxiliary EMBarrel data: noise rms More...
|
|
std::vector< float > | m_sinThetaEmec |
| auxiliary EMEC data: sin(theta)
More...
|
|
std::vector< float > | m_calibCoeffEmec |
| auxiliary EMEC data: calibration coeeficient More...
|
|
std::vector< float > | m_noiseRmsEmec |
| auxiliary EMEC data: noise rms More...
|
|
std::vector< float > | m_pulseShapeHec |
| auxiliary HEC data: pulse shape More...
|
|
std::vector< float > | m_pulseShapeDerHec |
| auxiliary HEC data: pulse shape derivative More...
|
|
std::vector< float > | m_calibCoeffHec |
| auxiliary HEC data: calibration coefficients More...
|
|
std::vector< float > | m_sinThetaHec |
| auxiliary HEC data: sin(theta) More...
|
|
std::vector< float > | m_satEnergyHec |
| auxiliary HEC data: saturation energy More...
|
|
std::vector< float > | m_noiseRmsHec |
| auxiliary HEC data: noise rms More...
|
|
std::vector< std::vector< float > > | m_autoCorrHec |
| auxiliary HEC data: auto-correlation matrix More...
|
|
std::vector< float > | m_cellRelGainFcal |
| auxiliary FCAL data: relative gains More...
|
|
std::vector< std::vector< float > > | m_pulseShapeFcal |
| auxiliary FCAL data: pulse shapes More...
|
|
std::vector< std::vector< float > > | m_pulseShapeDerFcal |
| auxiliary FCAL data: pulse shape derivatives More...
|
|
std::vector< std::vector< float > > | m_calibCoeffFcal |
| auxiliary FCAL data: calibration coefficients More...
|
|
std::vector< float > | m_calibCoeffFcalEm |
| auxiliary FCAL data: calibration coefficients More...
|
|
std::vector< float > | m_calibCoeffFcalHad |
| auxiliary FCAL data: calibration coefficients More...
|
|
std::vector< std::vector< float > > | m_noiseRmsFcal |
| auxiliary FCAL data: noise rms More...
|
|
std::vector< float > | m_autoCorrFcal |
| auxiliary FCAL data: auto-correlation matrix More...
|
|
SG::ReadHandleKey< LArHitEMap > | m_hitMapKey {this,"LArHitEMapKey","LArHitEMap"} |
| hit map More...
|
|
SG::WriteHandleKey< LArTTL1Container > | m_EmTTL1ContainerName |
| algorithm property: container name for the EM TTL1s More...
|
|
SG::WriteHandleKey< LArTTL1Container > | m_HadTTL1ContainerName |
| algorithm property: container name for the HAD TTL1s More...
|
|
std::array< SG::ReadHandleKey< LArHitContainer >, 4 > | m_xxxHitContainerName |
|
bool | m_NoiseOnOff |
| algorithm property: noise (in all sub-detectors) is on if true
More...
|
|
bool | m_PileUp |
| algorithm property: pile up or not More...
|
|
bool | m_noEmCalibMode |
| algorithm property: no calibration mode for EM towers More...
|
|
bool | m_noHadCalibMode |
| algorithm property: no calibration mode for had towers More...
|
|
float | m_debugThresh |
| algorithm property: debug threshold More...
|
|
bool | m_chronoTest |
| algorithm property: switch chrono on More...
|
|
std::string | m_truthHitsContainer |
| key for saving truth More...
|
|
DataObjIDColl | m_extendedExtraObjects |
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
The aim of this algorithm is the simulation of the LAr analogue trigger tower sums.
It includes correct allocation of cells to towers, pulse profile as a function of time, saturation, appropriate noise addition, pile-up.
The resulting signals are an input to the Preprocessor (which in turn performs digitization, filtering, bunch crossing id., noise suppression,...)
Since it needs hits, the simulation only takes "simul" datasets as input, NOT digitized datasets.
- Warning
- although the output is not digitized, LArTTL1Maker is part of the digitization simulation.
- Author
- F. Ledroit (LPSC-Grenoble)
Definition at line 60 of file LArTTL1Maker.h.
◆ StoreGateSvc_t
◆ LArTTL1Maker()
LArTTL1Maker::LArTTL1Maker |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
constructor
Definition at line 54 of file LArTTL1Maker.cxx.
56 m_ttSvc(
"CaloTriggerTowerService"),
61 {std::string(
"LArHitEMB"), std::string(
"LArHitEMEC"),
62 std::string(
"LArHitHEC"), std::string(
"LArHitFCAL")}}
103 for (
int ieta = 0; ieta <
nEta; ieta++) {
138 "Specify a value to get a pair of LArTTL1 containers with "
139 "the truth hits in them");
◆ ~LArTTL1Maker()
LArTTL1Maker::~LArTTL1Maker |
( |
| ) |
|
|
virtual |
◆ computeNoise()
std::vector< float > LArTTL1Maker::computeNoise |
( |
const Identifier |
towerId, |
|
|
const int |
Ieta, |
|
|
std::vector< float > & |
inputV, |
|
|
CLHEP::HepRandomEngine * |
rndmEngine |
|
) |
| |
|
private |
Definition at line 1077 of file LArTTL1Maker.cxx.
1094 float sigmaNoise = 0;
1095 std::vector<float>* autoC =
nullptr;
1096 std::vector<float> noiseRms(4);
1104 if (emb || barrelEnd || emec) {
1133 int module = emOrHad + 1;
1134 if (emOrHad && (Ieta == 3 || Ieta == 4)) {
1140 sigmaNoise = noiseRms[Ieta - 1];
1142 << sigmaNoise <<
" module= " <<
module <<
"Ieta= " << Ieta);
1149 if (fabs((*autoC)[0]) < 0.001) {
1152 <<
"setting default values 1.00 0.10 -0.30 -0.20 "
1153 "-0.05 -0.01 -0.01 ");
1156 (*autoC)[2] = -0.30;
1157 (*autoC)[3] = -0.20;
1158 (*autoC)[4] = -0.05;
1159 (*autoC)[5] = -0.01;
1160 (*autoC)[6] = -0.01;
1162 if (sigmaNoise < 0.001) {
1165 <<
"setting default value 300 MeV ");
1173 const float c11 = sigmaNoise * (*autoC)[0];
1174 const float c21 = sigmaNoise * (*autoC)[1];
1175 const float c31 = sigmaNoise * (*autoC)[2];
1176 const float c41 = sigmaNoise * (*autoC)[3];
1177 const float c51 = sigmaNoise * (*autoC)[4];
1178 const float c61 = sigmaNoise * (*autoC)[5];
1179 const float c71 = sigmaNoise * (*autoC)[6];
1181 const float c22 = sqrt(c11 * c11 - c21 * c21);
1182 const float inv_c22 = 1. / c22;
1183 const float c32 = (c21 * c11 - c21 * c31) * inv_c22;
1184 const float c33 = sqrt(c11 * c11 - c31 * c31 - c32 * c32);
1185 const float inv_c33 = 1. / c33;
1186 const float c42 = (c31 * c11 - c21 * c41) * inv_c22;
1187 const float c43 = (c21 * c11 - c31 * c41 - c32 * c42) * inv_c33;
1188 const float c44 = sqrt(c11 * c11 - c41 * c41 - c42 * c42 - c43 * c43);
1189 const float inv_c44 = 1. / c44;
1190 const float c52 = (c41 * c11 - c21 * c51) * inv_c22;
1191 const float c53 = (c31 * c11 - c31 * c51 - c32 * c52) * inv_c33;
1192 const float c54 = (c21 * c11 - c41 * c51 - c42 * c52 - c43 * c53) * inv_c44;
1194 sqrt(c11 * c11 - c51 * c51 - c52 * c52 - c53 * c53 - c54 * c54);
1195 const float inv_c55 = 1. / c55;
1196 const float c62 = (c51 * c11 - c21 * c61) * inv_c22;
1197 const float c63 = (c41 * c11 - c31 * c61 - c32 * c62) * inv_c33;
1198 const float c64 = (c31 * c11 - c41 * c61 - c42 * c62 - c43 * c63) * inv_c44;
1200 (c21 * c11 - c51 * c61 - c52 * c62 - c53 * c63 - c54 * c64) * inv_c55;
1201 const float c66 = sqrt(c11 * c11 - c61 * c61 - c62 * c62 - c63 * c63 -
1202 c64 * c64 - c65 * c65);
1203 const float c72 = (c61 * c11 - c21 * c71) * inv_c22;
1204 const float c73 = (c51 * c11 - c31 * c71 - c32 * c72) * inv_c33;
1205 const float c74 = (c41 * c11 - c41 * c71 - c42 * c72 - c43 * c73) * inv_c44;
1207 (c31 * c11 - c51 * c71 - c52 * c72 - c53 * c73 - c54 * c74) * inv_c55;
1209 (c21 * c11 - c61 * c71 - c62 * c72 - c63 * c73 - c64 * c74 - c65 * c75) /
1211 const float c77 = sqrt(c11 * c11 - c71 * c71 - c72 * c72 - c73 * c73 -
1212 c74 * c74 - c75 * c75 - c76 * c76);
1215 RandGaussZiggurat::shootArray(rndmEngine,
static_cast<int>(
s_NBSAMPLES), rndm,
1217 outputV[0] = inputV[0] + c11 * rndm[0];
1218 outputV[1] = inputV[1] + c21 * rndm[0] + c22 * rndm[1];
1219 outputV[2] = inputV[2] + c31 * rndm[0] + c32 * rndm[1] + c33 * rndm[2];
1221 inputV[3] + c41 * rndm[0] + c42 * rndm[1] + c43 * rndm[2] + c44 * rndm[3];
1222 outputV[4] = inputV[4] + c51 * rndm[0] + c52 * rndm[1] + c53 * rndm[2] +
1223 c54 * rndm[3] + c55 * rndm[4];
1224 outputV[5] = inputV[5] + c61 * rndm[0] + c62 * rndm[1] + c63 * rndm[2] +
1225 c64 * rndm[3] + c65 * rndm[4] + c66 * rndm[5];
1226 outputV[6] = inputV[6] + c71 * rndm[0] + c72 * rndm[1] + c73 * rndm[2] +
1227 c74 * rndm[3] + c75 * rndm[4] + c76 * rndm[5] + c77 * rndm[6];
◆ computeSignal()
std::vector< float > LArTTL1Maker::computeSignal |
( |
const Identifier |
towerId, |
|
|
const int |
Ieta, |
|
|
const int |
specialCase, |
|
|
std::vector< float > |
visEnergy, |
|
|
const int |
refTime |
|
) |
| const |
|
private |
initialize hit map
Definition at line 860 of file LArTTL1Maker.cxx.
883 int visEvecSize = std::ssize(ttSumEnergy);
889 if (emb || barrelEnd || emec) {
893 float calibCoeff = 0.;
905 if (calibCoeff < 0.001) {
908 <<
" setting default value 6. ");
915 for (
int iTime = 0; iTime < visEvecSize; iTime++) {
916 if (fabs(ttSumEnergy[iTime]) > 0.) {
919 ttSumEnergy[iTime] *= calibCoeff;
921 " ComputeSignal: applied EM calibration coefficient (iTime) "
922 << calibCoeff <<
" (" << iTime <<
") ");
947 for (
int iSamp = 0; iSamp <
s_NBSAMPLES; iSamp++) {
954 static_cast<int>(floor(
hitTime * crossingRate + 0.5));
957 int j = iSamp -
time;
960 (pulseShape[j] - pulseShapeDer[j] * dTime) *
theEnergy;
963 int j = iSamp - iTime + refTime;
965 bareSignal[iSamp] += pulseShape[j] *
theEnergy;
985 for (
int iTime = 0; iTime < visEvecSize; iTime++) {
993 for (
int iSamp = 0; iSamp <
s_NBSAMPLES; iSamp++) {
999 int time =
static_cast<int>(floor(
hitTime * crossingRate + 0.5));
1002 int j = iSamp -
time;
1004 bareSignal[iSamp] +=
1005 (pulseShape[j] - pulseShapeDer[j] * dTime) *
theEnergy;
1008 int j = iSamp - iTime + refTime;
1010 bareSignal[iSamp] += pulseShape[j] *
theEnergy;
1014 if (bareSignal[iSamp] > satEt) {
1015 bareSignal[iSamp] = satEt;
1026 int module = emOrHad + 1;
1028 if (emOrHad && (Ieta == 3 || Ieta == 4)) {
1037 for (
int iTime = 0; iTime < visEvecSize; iTime++) {
1046 for (
int iSamp = 0; iSamp <
s_NBSAMPLES; iSamp++) {
1049 int hitTime = iTime - refTime;
1052 int time =
static_cast<int>(floor(
hitTime * crossingRate + 0.5));
1055 int j = iSamp -
time;
1057 bareSignal[iSamp] +=
1058 (pulseShape[j] - pulseShapeDer[j] * dTime) *
theEnergy;
1061 int j = iSamp - iTime + refTime;
1063 bareSignal[iSamp] += pulseShape[j] *
theEnergy;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ decodeInverse()
int LArTTL1Maker::decodeInverse |
( |
int |
region, |
|
|
int |
eta |
|
) |
| |
|
private |
Definition at line 1748 of file LArTTL1Maker.cxx.
1764 }
else if (region == 1 || region == 2) {
1770 }
else if (region == 3) {
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode LArTTL1Maker::execute |
( |
| ) |
|
|
overridevirtual |
Create LArTTL1 object save in TES (2 containers: 1 EM, 1 hadronic)
Definition at line 298 of file LArTTL1Maker.cxx.
317 CLHEP::HepRandomEngine* rndmEngine = *rngWrapper;
350 ATH_CHECK(ttL1ContainerEm.record(std::make_unique<LArTTL1Container>()));
353 ATH_CHECK(ttL1ContainerHad.record(std::make_unique<LArTTL1Container>()));
355 std::unique_ptr<LArTTL1Container> truth_ttL1ContainerEm;
356 std::unique_ptr<LArTTL1Container> truth_ttL1ContainerHad;
358 truth_ttL1ContainerEm = std::make_unique<LArTTL1Container>();
359 truth_ttL1ContainerHad = std::make_unique<LArTTL1Container>();
366 std::vector<std::vector<float> >
368 std::vector<std::vector<float> >
370 sumEnergy.resize(nbTT);
371 sumEnergy2.resize(nbTT);
372 std::vector<float> ttSumE;
373 int ttSumEvecSize = 0;
376 ttSumEvecSize = 2 * crossingTime - 1;
377 refTime = crossingTime - 1;
383 << ttSumEvecSize <<
" reference time= " << refTime);
384 ttSumE.resize(ttSumEvecSize);
385 for (
unsigned int iTT = 0; iTT < nbTT; iTT++) {
386 sumEnergy[iTT] = ttSumE;
387 sumEnergy2[iTT] = ttSumE;
390 m_chronSvc->chronoStart(
"LArTTL1Mk hit loop ");
393 int it_end = hitmap->GetNbCells();
401 float outOfTimeE = 0.;
405 float printEthresh = 20.;
406 int nMissingGain = 0;
407 for (;
it != it_end; ++
it) {
409 const std::vector<std::pair<float, float> >& timeE = hitlist.
getData();
410 if (!timeE.empty()) {
413 bool skipCell =
false;
418 if (!
m_ttSvc->is_in_lvl1(cellId))
435 const float cellSampFraction = fSampl->
FSAMPL(cellId);
436 const float inv_cellSampFraction = 1. / cellSampFraction;
450 std::vector<float> vecRG;
481 if (relGain < 0.001) {
485 << fcalHash <<
"), setting default value 1. ");
503 for (
const auto&
first : timeE) {
504 float hitEnergy =
first.first;
507 if (hitEnergy > printEthresh) {
511 <<
" energy= " << hitEnergy);
519 if (fabs(hitEnergy) > 1
e+9) {
522 <<
" energy= " << hitEnergy);
533 iShift =
static_cast<int>(floor(
hitTime + 0.5));
537 iShift =
static_cast<int>(floor(
hitTime * crossingRate + 0.5));
542 int iTime = iShift + refTime;
546 if (iTime >= 0 && iTime < ttSumEvecSize) {
551 ttSumE = sumEnergy[ttHash];
553 hitEnergy * inv_cellSampFraction * sinTheta * relGain;
554 sumEnergy[ttHash] = ttSumE;
558 ttSumE = sumEnergy2[ttHash];
560 hitEnergy * inv_cellSampFraction * sinTheta * relGain;
561 sumEnergy2[ttHash] = ttSumE;
567 inTimeE += hitEnergy;
571 outOfTimeE += hitEnergy;
573 if (hitEnergy > printEthresh) {
575 ATH_MSG_DEBUG(
"Found a hit out of the timing window, hitTime= "
576 <<
hitTime <<
" with more than " << printEthresh
577 <<
" MeV: hitEnergy= " << hitEnergy <<
" MeV");
580 "Found a hit out of the timing window, hitTime= "
581 <<
hitTime <<
" with more than " << printEthresh
582 <<
" MeV: hitEnergy= " << hitEnergy <<
" MeV");
592 ATH_MSG_DEBUG(
"Number of missing relative FCAL gains for this event = "
594 if (inTimeE == 0 || nInTime == 0)
598 << outOfTimeE <<
" MeV"
599 <<
" represents " << 100. * outOfTimeE / inTimeE
600 <<
" % of in time energy for " << nOutOfTime <<
" ("
601 << 100. * nOutOfTime / nInTime <<
" %) hits");
602 if (outOfTimeE > 0.02 * inTimeE) {
604 << outOfTimeE <<
" MeV"
605 <<
" larger than 2% of in time energy = " << inTimeE
606 <<
" MeV; nb of out of time hits = " << nInTime <<
" ("
607 << (nInTime > 0 ? 100. * nOutOfTime / nInTime : 0)
612 m_chronSvc->chronoStop(
"LArTTL1Mk hit loop ");
613 m_chronSvc->chronoPrint(
"LArTTL1Mk hit loop ");
614 m_chronSvc->chronoStart(
"LArTTL1Mk TT loop ");
617 std::vector<std::string> emHadString(2);
618 emHadString[0] =
"ElectroMagnetic";
619 emHadString[1] =
"Hadronic";
629 for (; itTt != itEnd; ++itTt) {
653 std::vector<float> sumTTE = sumEnergy[ttHash];
654 std::vector<float> sumTTE2 = sumEnergy2[ttHash];
655 int nSpecialCase = 0;
658 for (
unsigned int i = 0;
i < sumTTE.size(); ++
i) {
659 if (fabs(sumTTE[
i]) > 0.) {
666 for (
unsigned int i = 0;
i < sumTTE2.size(); ++
i) {
667 if (fabs(sumTTE2[
i]) > 0.) {
678 analogSum =
computeSignal(towerId, Ieta, 0, sumTTE, refTime);
687 if (nSpecialCase > 1) {
689 " more than 1 special case, current Trigger Tower is "
690 << emHadString[emHad] <<
": "
693 analogSum2 =
computeSignal(towerId, Ieta, 1, sumTTE2, refTime);
694 for (
int isamp = 0; isamp <
s_NBSAMPLES; isamp++) {
695 analogSum[isamp] += analogSum2[isamp];
701 << emHadString[emHad] <<
": "
704 " transverse E (i.e. sum E / sampling fraction * sin_theta * rel "
705 "gain)= (at ref. time, before calib)"
706 << sumTTE[refTime] <<
" + " << sumTTE2[refTime]
707 <<
" (special cases) ");
708 }
else if (sumTTE[refTime] > 0.) {
710 << emHadString[emHad] <<
": "
713 " [very low] transverse E (i.e. sum E / sampling fraction * "
714 "sin_theta * rel gain)= (at ref. time, before calib)"
715 << sumTTE[refTime] <<
" + " << sumTTE2[refTime]
716 <<
" (special cases) ");
732 fullSignal =
computeNoise(towerId, Ieta, analogSum, rndmEngine);
734 fullSignal = analogSum;
743 ATH_MSG_DEBUG(
" uncalibrated amplitudes around peak (+-3 time slots): "
744 << sumTTE[refTime - 3] <<
", " << sumTTE[refTime - 2]
745 <<
", " << sumTTE[refTime - 1] <<
", " << sumTTE[refTime]
746 <<
", " << sumTTE[refTime + 1] <<
", "
747 << sumTTE[refTime + 2] <<
", " << sumTTE[refTime + 3]);
749 << analogSum[0] <<
", " << analogSum[1] <<
", "
750 << analogSum[2] <<
", " << analogSum[3] <<
", "
751 << analogSum[4] <<
", " << analogSum[5] <<
", "
754 << analogSum[0] / analogSum[3] <<
", "
755 << analogSum[1] / analogSum[3] <<
", "
756 << analogSum[2] / analogSum[3] <<
", "
757 << analogSum[3] / analogSum[3] <<
", "
758 << analogSum[4] / analogSum[3] <<
", "
759 << analogSum[5] / analogSum[3] <<
", "
760 << analogSum[6] / analogSum[3]);
762 << fullSignal[0] <<
", " << fullSignal[1] <<
", "
763 << fullSignal[2] <<
", " << fullSignal[3] <<
", "
764 << fullSignal[4] <<
", " << fullSignal[5] <<
", "
767 for (
unsigned int iTime = 0; iTime < sumTTE.size(); iTime++) {
769 << iTime <<
" hit energy = " << sumTTE[iTime]);
772 }
else if (sumTTE[refTime] > 0.) {
774 " uncalibrated amplitudes around peak (+-3 time slots): "
775 << sumTTE[refTime - 3] <<
", " << sumTTE[refTime - 2] <<
", "
776 << sumTTE[refTime - 1] <<
", " << sumTTE[refTime] <<
", "
777 << sumTTE[refTime + 1] <<
", " << sumTTE[refTime + 2] <<
", "
778 << sumTTE[refTime + 3]);
780 << analogSum[0] <<
", " << analogSum[1] <<
", "
781 << analogSum[2] <<
", " << analogSum[3] <<
", "
782 << analogSum[4] <<
", " << analogSum[5] <<
", "
785 << analogSum[0] / analogSum[3] <<
", "
786 << analogSum[1] / analogSum[3] <<
", "
787 << analogSum[2] / analogSum[3] <<
", "
788 << analogSum[3] / analogSum[3] <<
", "
789 << analogSum[4] / analogSum[3] <<
", "
790 << analogSum[5] / analogSum[3] <<
", "
791 << analogSum[6] / analogSum[3]);
793 << fullSignal[0] <<
", " << fullSignal[1] <<
", "
794 << fullSignal[2] <<
", " << fullSignal[3] <<
", "
795 << fullSignal[4] <<
", " << fullSignal[5] <<
", "
806 ttL1 =
new LArTTL1(ttChannel, towerId, fullSignal);
808 ttL1ContainerHad->push_back(ttL1);
810 ttL1ContainerEm->push_back(ttL1);
814 std::vector<float>
et(3);
815 et[0] = sumTTE[refTime - 1];
816 et[1] = sumTTE[refTime];
817 et[2] = sumTTE[refTime + 1];
820 truth_ttL1ContainerHad->
push_back(truth_ttL1);
822 truth_ttL1ContainerEm->
push_back(truth_ttL1);
831 m_chronSvc->chronoPrint(
"LArTTL1Mk TT loop ");
835 << ttL1ContainerEm->size() <<
" , "
836 << ttL1ContainerHad->size());
838 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 50 of file AthAlgorithm.cxx.
57 return Algorithm::extraOutputDeps();
◆ finalize()
StatusCode LArTTL1Maker::finalize |
( |
| ) |
|
|
overridevirtual |
◆ handle()
void LArTTL1Maker::handle |
( |
const Incident & |
| ) |
|
|
overridevirtual |
◆ initialize()
StatusCode LArTTL1Maker::initialize |
( |
| ) |
|
|
overridevirtual |
Read ascii files for auxiliary data (puslse shapes, noise, etc...)
Definition at line 148 of file LArTTL1Maker.cxx.
160 ATH_MSG_INFO(
"***********************************************");
161 ATH_MSG_INFO(
"* Steering options for LArTTL1Maker algorithm *");
162 ATH_MSG_INFO(
"***********************************************");
168 "Electronic noise will be added in each TT for selected "
199 "NO calibration mode chosen for EM towers "
200 <<
" == technical option. Should not be used for physics !!! ");
207 "NO calibration mode chosen for HEC towers "
208 <<
" == technical option. Should not be used for physics !!! ");
210 ATH_MSG_DEBUG(
"standard calibration mode chosen for HEC towers ");
218 " In case of pileup, the trigger time subtraction is done in "
220 ATH_MSG_INFO(
" => LArTTL1Maker will not apply Trigger Time ");
242 return StatusCode::FAILURE;
249 ATH_MSG_DEBUG(
"Successfully retrieved LArEM helper from DetectorStore");
254 ATH_MSG_DEBUG(
"Successfully retrieved LArHEC helper from DetectorStore");
258 ATH_MSG_DEBUG(
"Successfully retrieved LArFCAL helper from DetectorStore");
263 SmartIF<IIncidentSvc> incSvc{service(
"IncidentSvc")};
283 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
virtual bool LArTTL1Maker::isClonable |
( |
| ) |
const |
|
inlinefinaloverridevirtual |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ readAuxiliary()
StatusCode LArTTL1Maker::readAuxiliary |
( |
| ) |
|
|
private |
method called at the begining of execute() to fill the hit map
method called at initialization to read auxiliary data from ascii files
Definition at line 1232 of file LArTTL1Maker.cxx.
1242 std::string barrel_endcap;
1244 float sinTheta = 0.;
1246 std::vector<float> noiseRms(3);
1247 std::vector<float> noiseRms4(4);
1250 std::string pulsedataname =
1252 if (pulsedataname.empty()) {
1254 return StatusCode::FAILURE;
1256 const char* pulsedatafile = pulsedataname.c_str();
1257 std::ifstream
infile(pulsedatafile);
1261 return StatusCode::FAILURE;
1269 infile >> refEnergy >> pulseShape[0] >> pulseShape[1] >> pulseShape[2] >>
1270 pulseShape[3] >> pulseShape[4] >> pulseShape[5] >> pulseShape[6] >>
1271 pulseShape[7] >> pulseShape[8] >> pulseShape[9] >> pulseShape[10] >>
1272 pulseShape[11] >> pulseShape[12] >> pulseShape[13] >> pulseShape[14] >>
1273 pulseShape[15] >> pulseShape[16] >> pulseShape[17] >> pulseShape[18] >>
1274 pulseShape[19] >> pulseShape[20] >> pulseShape[21] >> pulseShape[22] >>
1278 infile >> pulseShapeDer[0] >> pulseShapeDer[1] >> pulseShapeDer[2] >>
1279 pulseShapeDer[3] >> pulseShapeDer[4] >> pulseShapeDer[5] >>
1280 pulseShapeDer[6] >> pulseShapeDer[7] >> pulseShapeDer[8] >>
1281 pulseShapeDer[9] >> pulseShapeDer[10] >> pulseShapeDer[11] >>
1282 pulseShapeDer[12] >> pulseShapeDer[13] >> pulseShapeDer[14] >>
1283 pulseShapeDer[15] >> pulseShapeDer[16] >> pulseShapeDer[17] >>
1284 pulseShapeDer[18] >> pulseShapeDer[19] >> pulseShapeDer[20] >>
1285 pulseShapeDer[21] >> pulseShapeDer[22] >> pulseShapeDer[23];
1301 infile >> Ieta >> sinTheta;
1303 infile >> noiseRms[0] >> noiseRms[1] >> noiseRms[2];
1316 infile >> Ieta >> sinTheta;
1318 infile >> noiseRms[0] >> noiseRms[1] >> noiseRms[2];
1328 ATH_MSG_INFO(
" 1 pulse shape per energy for EMB+EMEC : ");
1357 " Finished reading 1 calib coeff + 1 noise value per eta bin for EM: ");
1364 ATH_MSG_INFO(
"Ieta= " << ieta + 1 <<
", noise rms EMB: "
1375 if (pulsedataname.empty()) {
1377 return StatusCode::FAILURE;
1379 pulsedatafile = pulsedataname.c_str();
1380 infile.open(pulsedatafile);
1384 return StatusCode::FAILURE;
1428 infile >> autoCorr[0] >> autoCorr[1] >> autoCorr[2] >> autoCorr[3] >>
1429 autoCorr[4] >> autoCorr[5] >> autoCorr[6];
1449 "Finished reading calib coeff, noise rms, sat ene, auto corr for each "
1450 "eta bin for HEC: ");
1456 ATH_MSG_INFO(
" Ieta= " << ieta + 1 <<
", noise rms HEC: "
1475 if (pulsedataname.empty()) {
1477 return StatusCode::FAILURE;
1479 pulsedatafile = pulsedataname.c_str();
1480 infile.open(pulsedatafile);
1484 return StatusCode::FAILURE;
1493 for (
int iMod = 0; iMod <
nMod; iMod++) {
1497 infile >> imod >> noiseRms4[0] >> noiseRms4[1] >> noiseRms4[2] >>
1502 infile >> pulseShape[0] >> pulseShape[1] >> pulseShape[2] >>
1503 pulseShape[3] >> pulseShape[4] >> pulseShape[5] >> pulseShape[6] >>
1504 pulseShape[7] >> pulseShape[8] >> pulseShape[9] >> pulseShape[10] >>
1505 pulseShape[11] >> pulseShape[12] >> pulseShape[13] >> pulseShape[14] >>
1506 pulseShape[15] >> pulseShape[16] >> pulseShape[17] >> pulseShape[18] >>
1507 pulseShape[19] >> pulseShape[20] >> pulseShape[21] >> pulseShape[22] >>
1512 infile >> pulseShapeDer[0] >> pulseShapeDer[1] >> pulseShapeDer[2] >>
1513 pulseShapeDer[3] >> pulseShapeDer[4] >> pulseShapeDer[5] >>
1514 pulseShapeDer[6] >> pulseShapeDer[7] >> pulseShapeDer[8] >>
1515 pulseShapeDer[9] >> pulseShapeDer[10] >> pulseShapeDer[11] >>
1516 pulseShapeDer[12] >> pulseShapeDer[13] >> pulseShapeDer[14] >>
1517 pulseShapeDer[15] >> pulseShapeDer[16] >> pulseShapeDer[17] >>
1518 pulseShapeDer[18] >> pulseShapeDer[19] >> pulseShapeDer[20] >>
1519 pulseShapeDer[21] >> pulseShapeDer[22] >> pulseShapeDer[23];
1532 std::vector<float> auxV(3);
1537 "Finished reading noise, calib coeff and pulse shape for each module for "
1539 for (
int iMod = 0; iMod <
nMod; iMod++) {
1541 ATH_MSG_INFO(
" iMod= " << iMod <<
", noise rms FCAL (eta bin 1,2,3,4): "
1544 ATH_MSG_INFO(
" iMod= " << iMod <<
", calib coeff FCAL (eta bin 1,2,3,4): "
1579 if (pulsedataname.empty()) {
1580 ATH_MSG_ERROR(
"Could not locate Fcal_ptweights_table7.data file");
1581 return StatusCode::FAILURE;
1583 pulsedatafile = pulsedataname.c_str();
1584 infile.open(pulsedatafile);
1588 return StatusCode::FAILURE;
1597 const unsigned int colNum = 14;
1599 const unsigned int maxCell = 4;
1600 std::vector<std::string> TTlabel;
1601 TTlabel.resize(colNum);
1602 std::vector<float>
gain;
1603 gain.resize(colNum);
1607 while (
infile >> TTlabel[0] >>
gain[0] >> TTlabel[1] >>
gain[1] >>
1608 TTlabel[2] >>
gain[2] >> TTlabel[3] >>
gain[3] >> TTlabel[4] >>
1609 gain[4] >> TTlabel[5] >>
gain[5] >> TTlabel[6] >>
gain[6] >>
1610 TTlabel[7] >>
gain[7] >> TTlabel[8] >>
gain[8] >> TTlabel[9] >>
1611 gain[9] >> TTlabel[10] >>
gain[10] >> TTlabel[11] >>
gain[11] >>
1612 TTlabel[12] >>
gain[12] >> TTlabel[13] >>
gain[13]) {
1616 ATH_MSG_DEBUG(
" TTlabel[13], gain[13]= " << TTlabel[13] <<
", "
1638 std::string TTlab = TTlabel[
icol];
1641 int eta =
int(TTlab[0]) - 49;
1642 int phi =
int(TTlab[1]) - 65;
1649 if (TTlab.size() > 3) {
1659 if ((
layer == 1 && detZside > 0) || (
layer == 0 && detZside < 0)) {
1660 if (
eta == 0 ||
eta == 2) {
1672 if (
eta == 1 ||
eta == 3) {
1693 std::vector<Identifier> cellIdVec =
m_ttSvc->createCellIDvecLayer(ttId);
1698 std::vector<unsigned int> hashVec;
1700 unsigned int nCell = 0;
1716 hashVec.push_back(fcalHash);
1726 for (
unsigned int iCell = 0; iCell <
maxCell; iCell++) {
1745 return StatusCode::SUCCESS;
◆ renounce()
◆ renounceArray()
◆ setSeed() [1/3]
void LArTTL1Maker::setSeed |
( |
const std::string & |
algName, |
|
|
const EventContext & |
ctx |
|
) |
| |
|
private |
◆ setSeed() [2/3]
void LArTTL1Maker::setSeed |
( |
const std::string & |
algName, |
|
|
uint64_t |
ev, |
|
|
uint64_t |
run |
|
) |
| |
|
private |
◆ setSeed() [3/3]
void LArTTL1Maker::setSeed |
( |
size_t |
seed | ) |
|
|
private |
◆ sysInitialize()
StatusCode AthAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_autoCorrEm
std::vector<float> LArTTL1Maker::m_autoCorrEm |
|
private |
auxiliary EM data: auto-correlation matrix
Definition at line 170 of file LArTTL1Maker.h.
◆ m_autoCorrFcal
std::vector<float> LArTTL1Maker::m_autoCorrFcal |
|
private |
auxiliary FCAL data: auto-correlation matrix
Definition at line 221 of file LArTTL1Maker.h.
◆ m_autoCorrHec
std::vector< std::vector<float> > LArTTL1Maker::m_autoCorrHec |
|
private |
auxiliary HEC data: auto-correlation matrix
Definition at line 203 of file LArTTL1Maker.h.
◆ m_BeginRunPriority
int LArTTL1Maker::m_BeginRunPriority |
|
private |
◆ m_calibCoeffEmb
std::vector<float> LArTTL1Maker::m_calibCoeffEmb |
|
private |
auxiliary EMBarrel data: calibration coefficient
Definition at line 175 of file LArTTL1Maker.h.
◆ m_calibCoeffEmec
std::vector<float> LArTTL1Maker::m_calibCoeffEmec |
|
private |
auxiliary EMEC data: calibration coeeficient
Definition at line 184 of file LArTTL1Maker.h.
◆ m_calibCoeffFcal
std::vector< std::vector<float> > LArTTL1Maker::m_calibCoeffFcal |
|
private |
auxiliary FCAL data: calibration coefficients
Definition at line 212 of file LArTTL1Maker.h.
◆ m_calibCoeffFcalEm
std::vector<float> LArTTL1Maker::m_calibCoeffFcalEm |
|
private |
auxiliary FCAL data: calibration coefficients
Definition at line 214 of file LArTTL1Maker.h.
◆ m_calibCoeffFcalHad
std::vector<float> LArTTL1Maker::m_calibCoeffFcalHad |
|
private |
auxiliary FCAL data: calibration coefficients
Definition at line 216 of file LArTTL1Maker.h.
◆ m_calibCoeffHec
std::vector<float> LArTTL1Maker::m_calibCoeffHec |
|
private |
auxiliary HEC data: calibration coefficients
Definition at line 195 of file LArTTL1Maker.h.
◆ m_cellRelGainFcal
std::vector<float> LArTTL1Maker::m_cellRelGainFcal |
|
private |
◆ m_chronoTest
bool LArTTL1Maker::m_chronoTest |
|
private |
◆ m_chronSvc
IChronoStatSvc* LArTTL1Maker::m_chronSvc |
|
private |
◆ m_debugThresh
float LArTTL1Maker::m_debugThresh |
|
private |
◆ m_detStore
◆ m_emHelper
◆ m_EmTTL1ContainerName
algorithm property: container name for the EM TTL1s
Definition at line 227 of file LArTTL1Maker.h.
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthAlgorithm::m_extendedExtraObjects |
|
privateinherited |
◆ m_fcalHelper
◆ m_fSamplKey
◆ m_HadTTL1ContainerName
algorithm property: container name for the HAD TTL1s
Definition at line 229 of file LArTTL1Maker.h.
◆ m_hecHelper
◆ m_hitMapKey
◆ m_lvl1Helper
◆ m_noEmCalibMode
bool LArTTL1Maker::m_noEmCalibMode |
|
private |
algorithm property: no calibration mode for EM towers
Definition at line 238 of file LArTTL1Maker.h.
◆ m_noHadCalibMode
bool LArTTL1Maker::m_noHadCalibMode |
|
private |
algorithm property: no calibration mode for had towers
Definition at line 240 of file LArTTL1Maker.h.
◆ m_NoiseOnOff
bool LArTTL1Maker::m_NoiseOnOff |
|
private |
algorithm property: noise (in all sub-detectors) is on if true
Definition at line 234 of file LArTTL1Maker.h.
◆ m_noiseRmsEmb
std::vector<float> LArTTL1Maker::m_noiseRmsEmb |
|
private |
◆ m_noiseRmsEmec
std::vector<float> LArTTL1Maker::m_noiseRmsEmec |
|
private |
◆ m_noiseRmsFcal
std::vector< std::vector<float> > LArTTL1Maker::m_noiseRmsFcal |
|
private |
◆ m_noiseRmsHec
std::vector<float> LArTTL1Maker::m_noiseRmsHec |
|
private |
◆ m_OflHelper
◆ m_PileUp
bool LArTTL1Maker::m_PileUp |
|
private |
◆ m_pulseShapeDerEm
std::vector<std::vector<float> > LArTTL1Maker::m_pulseShapeDerEm |
|
private |
auxiliary EM data: pulse shape derivative
Definition at line 168 of file LArTTL1Maker.h.
◆ m_pulseShapeDerFcal
std::vector< std::vector<float> > LArTTL1Maker::m_pulseShapeDerFcal |
|
private |
auxiliary FCAL data: pulse shape derivatives
Definition at line 210 of file LArTTL1Maker.h.
◆ m_pulseShapeDerHec
std::vector<float> LArTTL1Maker::m_pulseShapeDerHec |
|
private |
auxiliary HEC data: pulse shape derivative
Definition at line 193 of file LArTTL1Maker.h.
◆ m_pulseShapeEm
std::vector<std::vector<float> > LArTTL1Maker::m_pulseShapeEm |
|
private |
◆ m_pulseShapeFcal
std::vector< std::vector<float> > LArTTL1Maker::m_pulseShapeFcal |
|
private |
◆ m_pulseShapeHec
std::vector<float> LArTTL1Maker::m_pulseShapeHec |
|
private |
◆ m_randomSeedOffset
Gaudi::Property<uint32_t> LArTTL1Maker::m_randomSeedOffset {this, "RandomSeedOffset", 2, ""} |
|
private |
◆ m_randomStreamName
Gaudi::Property<std::string> LArTTL1Maker::m_randomStreamName {this, "RandomStreamName", "LArTTL1Maker", ""} |
|
private |
◆ m_RandomSvc
◆ m_refEnergyEm
std::vector<float> LArTTL1Maker::m_refEnergyEm |
|
private |
auxiliary EM data: reference energies for saturation simulation
Definition at line 164 of file LArTTL1Maker.h.
◆ m_satEnergyHec
std::vector<float> LArTTL1Maker::m_satEnergyHec |
|
private |
◆ m_sinThetaEmb
std::vector<float> LArTTL1Maker::m_sinThetaEmb |
|
private |
◆ m_sinThetaEmec
std::vector<float> LArTTL1Maker::m_sinThetaEmec |
|
private |
◆ m_sinThetaHec
std::vector<float> LArTTL1Maker::m_sinThetaHec |
|
private |
◆ m_triggerTimeTool
Alorithm property: name of the TriggerTimeTool.
Definition at line 131 of file LArTTL1Maker.h.
◆ m_truthHitsContainer
std::string LArTTL1Maker::m_truthHitsContainer |
|
private |
◆ m_ttSvc
◆ m_useLegacyRandomSeeds
Gaudi::Property<bool> LArTTL1Maker::m_useLegacyRandomSeeds |
|
private |
Initial value:{this, "UseLegacyRandomSeeds", false,
"Use MC16-style random number seeding"}
Definition at line 125 of file LArTTL1Maker.h.
◆ m_useTriggerTime
bool LArTTL1Maker::m_useTriggerTime |
|
private |
Alorithm property: use trigger time or not.
Definition at line 129 of file LArTTL1Maker.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_xxxHitContainerName
◆ s_MAXSAMPLES
const short LArTTL1Maker::s_MAXSAMPLES = 24 |
|
staticprivate |
◆ s_NBDEPTHS
const short LArTTL1Maker::s_NBDEPTHS = 4 |
|
staticprivate |
◆ s_NBENERGIES
const short LArTTL1Maker::s_NBENERGIES = 12 |
|
staticprivate |
number of energies at which saturation is described (em)
Definition at line 161 of file LArTTL1Maker.h.
◆ s_NBETABINS
const short LArTTL1Maker::s_NBETABINS = 15 |
|
staticprivate |
◆ s_NBSAMPLES
const short LArTTL1Maker::s_NBSAMPLES = 7 |
|
staticprivate |
◆ s_PEAKPOS
const short LArTTL1Maker::s_PEAKPOS = 3 |
|
staticprivate |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
std::vector< float > m_sinThetaEmb
auxiliary EMBarrel data: sin(theta)
std::array< SG::ReadHandleKey< LArHitContainer >, 4 > m_xxxHitContainerName
static const short s_NBENERGIES
number of energies at which saturation is described (em)
Extra patterns decribing particle interation process.
SeedingOptionType
Options for seeding option=0 is setSeed as in MC20 option=1 is setSeedLegacy as in MC16 option=2 is s...
std::vector< float > m_noiseRmsHec
auxiliary HEC data: noise rms
static const short s_PEAKPOS
peak position
Scalar phi() const
phi method
SG::ReadCondHandleKey< ILArfSampl > m_fSamplKey
Sampling fractions retrieved from DB.
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
bool is_lar_fcal(Identifier id) const
bool is_fcal(const Identifier id) const
Test wether given tower or layer is part of the FCAL.
StatusCode readAuxiliary()
method called at the begining of execute() to fill the hit map
size_type channel_hash_max() const
One more than the largest channel (cell) hash code.
SG::WriteHandleKey< LArTTL1Container > m_EmTTL1ContainerName
algorithm property: container name for the EM TTL1s
std::vector< std::vector< float > > m_autoCorrHec
auxiliary HEC data: auto-correlation matrix
Scalar eta() const
pseudorapidity method
std::vector< float > computeSignal(const Identifier towerId, const int Ieta, const int specialCase, std::vector< float > visEnergy, const int refTime) const
initialize hit map
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
void setSeedLegacy(const std::string &algName, size_t slot, uint64_t ev, uint64_t run, uint64_t offset, SeedingOptionType seeding, EventContext::ContextEvt_t evt=EventContext::INVALID_CONTEXT_EVT)
Set the random seed using a string (e.g.
int decodeInverse(int region, int eta)
bool is_emec(const Identifier id) const
Test wether given tower or layer is part of the EM end-cap.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
std::vector< float > m_calibCoeffFcalHad
auxiliary FCAL data: calibration coefficients
IdentifierHash channel_hash(Identifier channelId) const
Convert a connected channel (cell) Identifier to a hash code.
int region(const Identifier id) const
return region according to :
static const short s_NBSAMPLES
number of samples in TTL1s
bool is_barrel_end(const Identifier id) const
Test wether given tower or layer is part of the EM barrel END.
std::vector< float > m_calibCoeffEmec
auxiliary EMEC data: calibration coeeficient
#define ATH_MSG_VERBOSE(x)
bool m_NoiseOnOff
algorithm property: noise (in all sub-detectors) is on if true
std::vector< float > m_sinThetaHec
auxiliary HEC data: sin(theta)
float m_debugThresh
algorithm property: debug threshold
id_iterator tower_end() const
end iterator over towers
constexpr int nPhi
Default bin number of phi for vertex map.
std::vector< std::vector< float > > m_noiseRmsFcal
auxiliary FCAL data: noise rms
Gaudi::Property< uint32_t > m_randomSeedOffset
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
bool is_hec(const Identifier id) const
Test wether given tower or layer is part of the HEC.
SG::ReadHandleKey< LArHitEMap > m_hitMapKey
hit map
std::string m_truthHitsContainer
key for saving truth
Identifier layer_id(int pos_neg_z, int sampling, int region, int eta, int phi, int layer) const
build a layer identifier
const LARLIST & getData() const
int phi(const Identifier id) const
phi [0,15]
std::vector< std::vector< float > > m_pulseShapeFcal
auxiliary FCAL data: pulse shapes
ToolHandle< CaloTriggerTowerService > m_ttSvc
std::vector< float > computeNoise(const Identifier towerId, const int Ieta, std::vector< float > &inputV, CLHEP::HepRandomEngine *rndmEngine)
virtual StatusCode sysInitialize() override
Override sysInitialize.
This class initializes the Calo (LAr and Tile) offline identifiers.
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
const LArFCAL_ID * m_fcalHelper
pointer to the offline FCAL helper
::StatusCode StatusCode
StatusCode definition for legacy code.
std::vector< float > m_cellRelGainFcal
auxiliary FCAL data: relative gains
virtual const float & FSAMPL(const HWIdentifier &id) const =0
std::vector< float > m_noiseRmsEmb
auxiliary EMBarrel data: noise rms
bool m_noEmCalibMode
algorithm property: no calibration mode for EM towers
std::vector< std::vector< float > > m_pulseShapeDerFcal
auxiliary FCAL data: pulse shape derivatives
static const short s_NBETABINS
number of eta bins
bool m_noHadCalibMode
algorithm property: no calibration mode for had towers
const CaloLVL1_ID * getLVL1_ID(void) const
std::vector< float > m_pulseShapeHec
auxiliary HEC data: pulse shape
bool is_lar_hec(Identifier id) const
std::vector< std::vector< float > > m_calibCoeffFcal
auxiliary FCAL data: calibration coefficients
bool is_emb(const Identifier id) const
Test wether given tower or layer is part of the EM barrel.
static const short s_NBDEPTHS
number of sampling (in depth)
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
std::vector< float > m_refEnergyEm
auxiliary EM data: reference energies for saturation simulation
std::vector< float > m_satEnergyHec
auxiliary HEC data: saturation energy
virtual void renounce()=0
std::vector< std::vector< float > > m_pulseShapeEm
auxiliary EM data: pulse shapes
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
A wrapper class for event-slot-local random engines.
const CaloLVL1_ID * m_lvl1Helper
pointer to the offline TT helper
const CaloCell_ID * m_OflHelper
pointer to the offline id helper
int eta(const Identifier id) const
return eta according to :
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
std::vector< float > m_calibCoeffEmb
auxiliary EMBarrel data: calibration coefficient
const LArEM_ID * m_emHelper
pointer to the offline EM helper
bool m_useTriggerTime
Alorithm property: use trigger time or not.
Identifier cell_id(const int subCalo, const int barec_or_posneg, const int sampling_or_fcalmodule, const int region_or_dummy, const int eta, const int phi) const
Make a cell (== channel) ID from constituting fields and subCalo index; for (Mini)FCAL,...
bool m_PileUp
algorithm property: pile up or not
Gaudi::Property< std::string > m_randomStreamName
std::vector< float > m_autoCorrEm
auxiliary EM data: auto-correlation matrix
DataObjIDColl m_extendedExtraObjects
ServiceHandle< IAthRNGSvc > m_RandomSvc
static const short s_MAXSAMPLES
max number of samples in pulse shape
Gaudi::Property< bool > m_useLegacyRandomSeeds
std::vector< float > m_noiseRmsEmec
auxiliary EMEC data: noise rms
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
def time(flags, cells_name, *args, **kw)
bool is_em_barrel(const Identifier id) const
test if the id belongs to the EM barrel
#define ATH_MSG_WARNING(x)
std::vector< float > m_sinThetaEmec
auxiliary EMEC data: sin(theta)
bool m_chronoTest
algorithm property: switch chrono on
IChronoStatSvc * m_chronSvc
size_type tower_hash_max(void) const
tower hash table max size
const LArHEC_ID * m_hecHelper
pointer to the offline HEC helper
std::vector< float > m_calibCoeffFcalEm
auxiliary FCAL data: calibration coefficients
SG::WriteHandleKey< LArTTL1Container > m_HadTTL1ContainerName
algorithm property: container name for the HAD TTL1s
id_iterator tower_begin() const
begin iterator over towers
int sampling(const Identifier id) const
return sampling according to :
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
AthAlgorithm()
Default constructor:
IdentifierHash tower_hash(Identifier towerId) const
create hash id from tower id
float hitTime(const AFP_SIDSimHit &hit)
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
constexpr int nEta
Default bin number of eta for vertex map.
std::vector< std::vector< float > > m_pulseShapeDerEm
auxiliary EM data: pulse shape derivative
bool is_tile(const Identifier id) const
Test wether given tower or layer is part of the Tile Calorimeter.
bool is_lar_em(Identifier id) const
Liquid Argon TT L1 sum class.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
std::vector< float > m_pulseShapeDerHec
auxiliary HEC data: pulse shape derivative
ToolHandle< ITriggerTime > m_triggerTimeTool
Alorithm property: name of the TriggerTimeTool.
std::vector< float > m_calibCoeffHec
auxiliary HEC data: calibration coefficients
std::vector< float > m_autoCorrFcal
auxiliary FCAL data: auto-correlation matrix