Loading [MathJax]/extensions/tex2jax.js
 |
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"),
104 for (
int ieta = 0; ieta <
nEta; ieta++) {
139 "Specify a value to get a pair of LArTTL1 containers with "
140 "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 1078 of file LArTTL1Maker.cxx.
1095 float sigmaNoise = 0;
1096 std::vector<float>* autoC =
nullptr;
1097 std::vector<float> noiseRms(4);
1105 if (emb || barrelEnd || emec) {
1134 int module = emOrHad + 1;
1135 if (emOrHad && (Ieta == 3 || Ieta == 4)) {
1141 sigmaNoise = noiseRms[Ieta - 1];
1143 << sigmaNoise <<
" module= " <<
module <<
"Ieta= " << Ieta);
1150 if (fabs((*autoC)[0]) < 0.001) {
1153 <<
"setting default values 1.00 0.10 -0.30 -0.20 "
1154 "-0.05 -0.01 -0.01 ");
1157 (*autoC)[2] = -0.30;
1158 (*autoC)[3] = -0.20;
1159 (*autoC)[4] = -0.05;
1160 (*autoC)[5] = -0.01;
1161 (*autoC)[6] = -0.01;
1163 if (sigmaNoise < 0.001) {
1166 <<
"setting default value 300 MeV ");
1174 const float c11 = sigmaNoise * (*autoC)[0];
1175 const float c21 = sigmaNoise * (*autoC)[1];
1176 const float c31 = sigmaNoise * (*autoC)[2];
1177 const float c41 = sigmaNoise * (*autoC)[3];
1178 const float c51 = sigmaNoise * (*autoC)[4];
1179 const float c61 = sigmaNoise * (*autoC)[5];
1180 const float c71 = sigmaNoise * (*autoC)[6];
1182 const float c22 = sqrt(c11 * c11 - c21 * c21);
1183 const float inv_c22 = 1. / c22;
1184 const float c32 = (c21 * c11 - c21 * c31) * inv_c22;
1185 const float c33 = sqrt(c11 * c11 - c31 * c31 - c32 * c32);
1186 const float inv_c33 = 1. / c33;
1187 const float c42 = (c31 * c11 - c21 * c41) * inv_c22;
1188 const float c43 = (c21 * c11 - c31 * c41 - c32 * c42) * inv_c33;
1189 const float c44 = sqrt(c11 * c11 - c41 * c41 - c42 * c42 - c43 * c43);
1190 const float inv_c44 = 1. / c44;
1191 const float c52 = (c41 * c11 - c21 * c51) * inv_c22;
1192 const float c53 = (c31 * c11 - c31 * c51 - c32 * c52) * inv_c33;
1193 const float c54 = (c21 * c11 - c41 * c51 - c42 * c52 - c43 * c53) * inv_c44;
1195 sqrt(c11 * c11 - c51 * c51 - c52 * c52 - c53 * c53 - c54 * c54);
1196 const float inv_c55 = 1. / c55;
1197 const float c62 = (c51 * c11 - c21 * c61) * inv_c22;
1198 const float c63 = (c41 * c11 - c31 * c61 - c32 * c62) * inv_c33;
1199 const float c64 = (c31 * c11 - c41 * c61 - c42 * c62 - c43 * c63) * inv_c44;
1201 (c21 * c11 - c51 * c61 - c52 * c62 - c53 * c63 - c54 * c64) * inv_c55;
1202 const float c66 = sqrt(c11 * c11 - c61 * c61 - c62 * c62 - c63 * c63 -
1203 c64 * c64 - c65 * c65);
1204 const float c72 = (c61 * c11 - c21 * c71) * inv_c22;
1205 const float c73 = (c51 * c11 - c31 * c71 - c32 * c72) * inv_c33;
1206 const float c74 = (c41 * c11 - c41 * c71 - c42 * c72 - c43 * c73) * inv_c44;
1208 (c31 * c11 - c51 * c71 - c52 * c72 - c53 * c73 - c54 * c74) * inv_c55;
1210 (c21 * c11 - c61 * c71 - c62 * c72 - c63 * c73 - c64 * c74 - c65 * c75) /
1212 const float c77 = sqrt(c11 * c11 - c71 * c71 - c72 * c72 - c73 * c73 -
1213 c74 * c74 - c75 * c75 - c76 * c76);
1216 RandGaussZiggurat::shootArray(rndmEngine,
static_cast<int>(
s_NBSAMPLES), rndm,
1218 outputV[0] = inputV[0] + c11 * rndm[0];
1219 outputV[1] = inputV[1] + c21 * rndm[0] + c22 * rndm[1];
1220 outputV[2] = inputV[2] + c31 * rndm[0] + c32 * rndm[1] + c33 * rndm[2];
1222 inputV[3] + c41 * rndm[0] + c42 * rndm[1] + c43 * rndm[2] + c44 * rndm[3];
1223 outputV[4] = inputV[4] + c51 * rndm[0] + c52 * rndm[1] + c53 * rndm[2] +
1224 c54 * rndm[3] + c55 * rndm[4];
1225 outputV[5] = inputV[5] + c61 * rndm[0] + c62 * rndm[1] + c63 * rndm[2] +
1226 c64 * rndm[3] + c65 * rndm[4] + c66 * rndm[5];
1227 outputV[6] = inputV[6] + c71 * rndm[0] + c72 * rndm[1] + c73 * rndm[2] +
1228 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 861 of file LArTTL1Maker.cxx.
884 int visEvecSize = std::ssize(ttSumEnergy);
890 if (emb || barrelEnd || emec) {
894 float calibCoeff = 0.;
906 if (calibCoeff < 0.001) {
909 <<
" setting default value 6. ");
916 for (
int iTime = 0; iTime < visEvecSize; iTime++) {
917 if (fabs(ttSumEnergy[iTime]) > 0.) {
920 ttSumEnergy[iTime] *= calibCoeff;
922 " ComputeSignal: applied EM calibration coefficient (iTime) "
923 << calibCoeff <<
" (" << iTime <<
") ");
948 for (
int iSamp = 0; iSamp <
s_NBSAMPLES; iSamp++) {
955 static_cast<int>(floor(
hitTime * crossingRate + 0.5));
958 int j = iSamp -
time;
961 (pulseShape[j] - pulseShapeDer[j] * dTime) *
theEnergy;
964 int j = iSamp - iTime + refTime;
966 bareSignal[iSamp] += pulseShape[j] *
theEnergy;
986 for (
int iTime = 0; iTime < visEvecSize; iTime++) {
994 for (
int iSamp = 0; iSamp <
s_NBSAMPLES; iSamp++) {
1000 int time =
static_cast<int>(floor(
hitTime * crossingRate + 0.5));
1003 int j = iSamp -
time;
1005 bareSignal[iSamp] +=
1006 (pulseShape[j] - pulseShapeDer[j] * dTime) *
theEnergy;
1009 int j = iSamp - iTime + refTime;
1011 bareSignal[iSamp] += pulseShape[j] *
theEnergy;
1015 if (bareSignal[iSamp] > satEt) {
1016 bareSignal[iSamp] = satEt;
1027 int module = emOrHad + 1;
1029 if (emOrHad && (Ieta == 3 || Ieta == 4)) {
1038 for (
int iTime = 0; iTime < visEvecSize; iTime++) {
1047 for (
int iSamp = 0; iSamp <
s_NBSAMPLES; iSamp++) {
1050 int hitTime = iTime - refTime;
1053 int time =
static_cast<int>(floor(
hitTime * crossingRate + 0.5));
1056 int j = iSamp -
time;
1058 bareSignal[iSamp] +=
1059 (pulseShape[j] - pulseShapeDer[j] * dTime) *
theEnergy;
1062 int j = iSamp - iTime + refTime;
1064 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 1749 of file LArTTL1Maker.cxx.
1765 }
else if (region == 1 || region == 2) {
1771 }
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 299 of file LArTTL1Maker.cxx.
318 CLHEP::HepRandomEngine* rndmEngine = *rngWrapper;
351 ATH_CHECK(ttL1ContainerEm.record(std::make_unique<LArTTL1Container>()));
354 ATH_CHECK(ttL1ContainerHad.record(std::make_unique<LArTTL1Container>()));
356 std::unique_ptr<LArTTL1Container> truth_ttL1ContainerEm;
357 std::unique_ptr<LArTTL1Container> truth_ttL1ContainerHad;
359 truth_ttL1ContainerEm = std::make_unique<LArTTL1Container>();
360 truth_ttL1ContainerHad = std::make_unique<LArTTL1Container>();
367 std::vector<std::vector<float> >
369 std::vector<std::vector<float> >
371 sumEnergy.resize(nbTT);
372 sumEnergy2.resize(nbTT);
373 std::vector<float> ttSumE;
374 int ttSumEvecSize = 0;
377 ttSumEvecSize = 2 * crossingTime - 1;
378 refTime = crossingTime - 1;
384 << ttSumEvecSize <<
" reference time= " << refTime);
385 ttSumE.resize(ttSumEvecSize);
386 for (
unsigned int iTT = 0; iTT < nbTT; iTT++) {
387 sumEnergy[iTT] = ttSumE;
388 sumEnergy2[iTT] = ttSumE;
391 m_chronSvc->chronoStart(
"LArTTL1Mk hit loop ");
394 int it_end = hitmap->GetNbCells();
402 float outOfTimeE = 0.;
406 float printEthresh = 20.;
407 int nMissingGain = 0;
408 for (;
it != it_end; ++
it) {
410 const std::vector<std::pair<float, float> >& timeE = hitlist.
getData();
411 if (!timeE.empty()) {
414 bool skipCell =
false;
419 if (!
m_ttSvc->is_in_lvl1(cellId))
436 const float cellSampFraction = fSampl->
FSAMPL(cellId);
437 const float inv_cellSampFraction = 1. / cellSampFraction;
451 std::vector<float> vecRG;
482 if (relGain < 0.001) {
486 << fcalHash <<
"), setting default value 1. ");
504 for (
const auto&
first : timeE) {
505 float hitEnergy =
first.first;
508 if (hitEnergy > printEthresh) {
512 <<
" energy= " << hitEnergy);
520 if (fabs(hitEnergy) > 1
e+9) {
523 <<
" energy= " << hitEnergy);
534 iShift =
static_cast<int>(floor(
hitTime + 0.5));
538 iShift =
static_cast<int>(floor(
hitTime * crossingRate + 0.5));
543 int iTime = iShift + refTime;
547 if (iTime >= 0 && iTime < ttSumEvecSize) {
552 ttSumE = sumEnergy[ttHash];
554 hitEnergy * inv_cellSampFraction * sinTheta * relGain;
555 sumEnergy[ttHash] = ttSumE;
559 ttSumE = sumEnergy2[ttHash];
561 hitEnergy * inv_cellSampFraction * sinTheta * relGain;
562 sumEnergy2[ttHash] = ttSumE;
568 inTimeE += hitEnergy;
572 outOfTimeE += hitEnergy;
574 if (hitEnergy > printEthresh) {
576 ATH_MSG_DEBUG(
"Found a hit out of the timing window, hitTime= "
577 <<
hitTime <<
" with more than " << printEthresh
578 <<
" MeV: hitEnergy= " << hitEnergy <<
" MeV");
581 "Found a hit out of the timing window, hitTime= "
582 <<
hitTime <<
" with more than " << printEthresh
583 <<
" MeV: hitEnergy= " << hitEnergy <<
" MeV");
593 ATH_MSG_DEBUG(
"Number of missing relative FCAL gains for this event = "
595 if (inTimeE == 0 || nInTime == 0)
599 << outOfTimeE <<
" MeV"
600 <<
" represents " << 100. * outOfTimeE / inTimeE
601 <<
" % of in time energy for " << nOutOfTime <<
" ("
602 << 100. * nOutOfTime / nInTime <<
" %) hits");
603 if (outOfTimeE > 0.02 * inTimeE) {
605 << outOfTimeE <<
" MeV"
606 <<
" larger than 2% of in time energy = " << inTimeE
607 <<
" MeV; nb of out of time hits = " << nInTime <<
" ("
608 << (nInTime > 0 ? 100. * nOutOfTime / nInTime : 0)
613 m_chronSvc->chronoStop(
"LArTTL1Mk hit loop ");
614 m_chronSvc->chronoPrint(
"LArTTL1Mk hit loop ");
615 m_chronSvc->chronoStart(
"LArTTL1Mk TT loop ");
618 std::vector<std::string> emHadString(2);
619 emHadString[0] =
"ElectroMagnetic";
620 emHadString[1] =
"Hadronic";
630 for (; itTt != itEnd; ++itTt) {
654 std::vector<float> sumTTE = sumEnergy[ttHash];
655 std::vector<float> sumTTE2 = sumEnergy2[ttHash];
656 int nSpecialCase = 0;
659 for (
unsigned int i = 0;
i < sumTTE.size(); ++
i) {
660 if (fabs(sumTTE[
i]) > 0.) {
667 for (
unsigned int i = 0;
i < sumTTE2.size(); ++
i) {
668 if (fabs(sumTTE2[
i]) > 0.) {
679 analogSum =
computeSignal(towerId, Ieta, 0, sumTTE, refTime);
688 if (nSpecialCase > 1) {
690 " more than 1 special case, current Trigger Tower is "
691 << emHadString[emHad] <<
": "
694 analogSum2 =
computeSignal(towerId, Ieta, 1, sumTTE2, refTime);
695 for (
int isamp = 0; isamp <
s_NBSAMPLES; isamp++) {
696 analogSum[isamp] += analogSum2[isamp];
702 << emHadString[emHad] <<
": "
705 " transverse E (i.e. sum E / sampling fraction * sin_theta * rel "
706 "gain)= (at ref. time, before calib)"
707 << sumTTE[refTime] <<
" + " << sumTTE2[refTime]
708 <<
" (special cases) ");
709 }
else if (sumTTE[refTime] > 0.) {
711 << emHadString[emHad] <<
": "
714 " [very low] transverse E (i.e. sum E / sampling fraction * "
715 "sin_theta * rel gain)= (at ref. time, before calib)"
716 << sumTTE[refTime] <<
" + " << sumTTE2[refTime]
717 <<
" (special cases) ");
733 fullSignal =
computeNoise(towerId, Ieta, analogSum, rndmEngine);
735 fullSignal = analogSum;
744 ATH_MSG_DEBUG(
" uncalibrated amplitudes around peak (+-3 time slots): "
745 << sumTTE[refTime - 3] <<
", " << sumTTE[refTime - 2]
746 <<
", " << sumTTE[refTime - 1] <<
", " << sumTTE[refTime]
747 <<
", " << sumTTE[refTime + 1] <<
", "
748 << sumTTE[refTime + 2] <<
", " << sumTTE[refTime + 3]);
750 << analogSum[0] <<
", " << analogSum[1] <<
", "
751 << analogSum[2] <<
", " << analogSum[3] <<
", "
752 << analogSum[4] <<
", " << analogSum[5] <<
", "
755 << analogSum[0] / analogSum[3] <<
", "
756 << analogSum[1] / analogSum[3] <<
", "
757 << analogSum[2] / analogSum[3] <<
", "
758 << analogSum[3] / analogSum[3] <<
", "
759 << analogSum[4] / analogSum[3] <<
", "
760 << analogSum[5] / analogSum[3] <<
", "
761 << analogSum[6] / analogSum[3]);
763 << fullSignal[0] <<
", " << fullSignal[1] <<
", "
764 << fullSignal[2] <<
", " << fullSignal[3] <<
", "
765 << fullSignal[4] <<
", " << fullSignal[5] <<
", "
768 for (
unsigned int iTime = 0; iTime < sumTTE.size(); iTime++) {
770 << iTime <<
" hit energy = " << sumTTE[iTime]);
773 }
else if (sumTTE[refTime] > 0.) {
775 " uncalibrated amplitudes around peak (+-3 time slots): "
776 << sumTTE[refTime - 3] <<
", " << sumTTE[refTime - 2] <<
", "
777 << sumTTE[refTime - 1] <<
", " << sumTTE[refTime] <<
", "
778 << sumTTE[refTime + 1] <<
", " << sumTTE[refTime + 2] <<
", "
779 << sumTTE[refTime + 3]);
781 << analogSum[0] <<
", " << analogSum[1] <<
", "
782 << analogSum[2] <<
", " << analogSum[3] <<
", "
783 << analogSum[4] <<
", " << analogSum[5] <<
", "
786 << analogSum[0] / analogSum[3] <<
", "
787 << analogSum[1] / analogSum[3] <<
", "
788 << analogSum[2] / analogSum[3] <<
", "
789 << analogSum[3] / analogSum[3] <<
", "
790 << analogSum[4] / analogSum[3] <<
", "
791 << analogSum[5] / analogSum[3] <<
", "
792 << analogSum[6] / analogSum[3]);
794 << fullSignal[0] <<
", " << fullSignal[1] <<
", "
795 << fullSignal[2] <<
", " << fullSignal[3] <<
", "
796 << fullSignal[4] <<
", " << fullSignal[5] <<
", "
807 ttL1 =
new LArTTL1(ttChannel, towerId, fullSignal);
809 ttL1ContainerHad->push_back(ttL1);
811 ttL1ContainerEm->push_back(ttL1);
815 std::vector<float>
et(3);
816 et[0] = sumTTE[refTime - 1];
817 et[1] = sumTTE[refTime];
818 et[2] = sumTTE[refTime + 1];
821 truth_ttL1ContainerHad->
push_back(truth_ttL1);
823 truth_ttL1ContainerEm->
push_back(truth_ttL1);
832 m_chronSvc->chronoPrint(
"LArTTL1Mk TT loop ");
836 << ttL1ContainerEm->size() <<
" , "
837 << ttL1ContainerHad->size());
839 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 149 of file LArTTL1Maker.cxx.
161 ATH_MSG_INFO(
"***********************************************");
162 ATH_MSG_INFO(
"* Steering options for LArTTL1Maker algorithm *");
163 ATH_MSG_INFO(
"***********************************************");
169 "Electronic noise will be added in each TT for selected "
200 "NO calibration mode chosen for EM towers "
201 <<
" == technical option. Should not be used for physics !!! ");
208 "NO calibration mode chosen for HEC towers "
209 <<
" == technical option. Should not be used for physics !!! ");
211 ATH_MSG_DEBUG(
"standard calibration mode chosen for HEC towers ");
219 " In case of pileup, the trigger time subtraction is done in "
221 ATH_MSG_INFO(
" => LArTTL1Maker will not apply Trigger Time ");
243 return StatusCode::FAILURE;
250 ATH_MSG_DEBUG(
"Successfully retrieved LArEM helper from DetectorStore");
255 ATH_MSG_DEBUG(
"Successfully retrieved LArHEC helper from DetectorStore");
259 ATH_MSG_DEBUG(
"Successfully retrieved LArFCAL helper from DetectorStore");
264 SmartIF<IIncidentSvc> incSvc{service(
"IncidentSvc")};
284 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 1233 of file LArTTL1Maker.cxx.
1243 std::string barrel_endcap;
1245 float sinTheta = 0.;
1247 std::vector<float> noiseRms(3);
1248 std::vector<float> noiseRms4(4);
1251 std::string pulsedataname =
1253 if (pulsedataname.empty()) {
1255 return StatusCode::FAILURE;
1257 const char* pulsedatafile = pulsedataname.c_str();
1258 std::ifstream
infile(pulsedatafile);
1262 return StatusCode::FAILURE;
1270 infile >> refEnergy >> pulseShape[0] >> pulseShape[1] >> pulseShape[2] >>
1271 pulseShape[3] >> pulseShape[4] >> pulseShape[5] >> pulseShape[6] >>
1272 pulseShape[7] >> pulseShape[8] >> pulseShape[9] >> pulseShape[10] >>
1273 pulseShape[11] >> pulseShape[12] >> pulseShape[13] >> pulseShape[14] >>
1274 pulseShape[15] >> pulseShape[16] >> pulseShape[17] >> pulseShape[18] >>
1275 pulseShape[19] >> pulseShape[20] >> pulseShape[21] >> pulseShape[22] >>
1279 infile >> pulseShapeDer[0] >> pulseShapeDer[1] >> pulseShapeDer[2] >>
1280 pulseShapeDer[3] >> pulseShapeDer[4] >> pulseShapeDer[5] >>
1281 pulseShapeDer[6] >> pulseShapeDer[7] >> pulseShapeDer[8] >>
1282 pulseShapeDer[9] >> pulseShapeDer[10] >> pulseShapeDer[11] >>
1283 pulseShapeDer[12] >> pulseShapeDer[13] >> pulseShapeDer[14] >>
1284 pulseShapeDer[15] >> pulseShapeDer[16] >> pulseShapeDer[17] >>
1285 pulseShapeDer[18] >> pulseShapeDer[19] >> pulseShapeDer[20] >>
1286 pulseShapeDer[21] >> pulseShapeDer[22] >> pulseShapeDer[23];
1302 infile >> Ieta >> sinTheta;
1304 infile >> noiseRms[0] >> noiseRms[1] >> noiseRms[2];
1317 infile >> Ieta >> sinTheta;
1319 infile >> noiseRms[0] >> noiseRms[1] >> noiseRms[2];
1329 ATH_MSG_INFO(
" 1 pulse shape per energy for EMB+EMEC : ");
1358 " Finished reading 1 calib coeff + 1 noise value per eta bin for EM: ");
1365 ATH_MSG_INFO(
"Ieta= " << ieta + 1 <<
", noise rms EMB: "
1376 if (pulsedataname.empty()) {
1378 return StatusCode::FAILURE;
1380 pulsedatafile = pulsedataname.c_str();
1381 infile.open(pulsedatafile);
1385 return StatusCode::FAILURE;
1429 infile >> autoCorr[0] >> autoCorr[1] >> autoCorr[2] >> autoCorr[3] >>
1430 autoCorr[4] >> autoCorr[5] >> autoCorr[6];
1450 "Finished reading calib coeff, noise rms, sat ene, auto corr for each "
1451 "eta bin for HEC: ");
1457 ATH_MSG_INFO(
" Ieta= " << ieta + 1 <<
", noise rms HEC: "
1476 if (pulsedataname.empty()) {
1478 return StatusCode::FAILURE;
1480 pulsedatafile = pulsedataname.c_str();
1481 infile.open(pulsedatafile);
1485 return StatusCode::FAILURE;
1494 for (
int iMod = 0; iMod <
nMod; iMod++) {
1498 infile >> imod >> noiseRms4[0] >> noiseRms4[1] >> noiseRms4[2] >>
1503 infile >> pulseShape[0] >> pulseShape[1] >> pulseShape[2] >>
1504 pulseShape[3] >> pulseShape[4] >> pulseShape[5] >> pulseShape[6] >>
1505 pulseShape[7] >> pulseShape[8] >> pulseShape[9] >> pulseShape[10] >>
1506 pulseShape[11] >> pulseShape[12] >> pulseShape[13] >> pulseShape[14] >>
1507 pulseShape[15] >> pulseShape[16] >> pulseShape[17] >> pulseShape[18] >>
1508 pulseShape[19] >> pulseShape[20] >> pulseShape[21] >> pulseShape[22] >>
1513 infile >> pulseShapeDer[0] >> pulseShapeDer[1] >> pulseShapeDer[2] >>
1514 pulseShapeDer[3] >> pulseShapeDer[4] >> pulseShapeDer[5] >>
1515 pulseShapeDer[6] >> pulseShapeDer[7] >> pulseShapeDer[8] >>
1516 pulseShapeDer[9] >> pulseShapeDer[10] >> pulseShapeDer[11] >>
1517 pulseShapeDer[12] >> pulseShapeDer[13] >> pulseShapeDer[14] >>
1518 pulseShapeDer[15] >> pulseShapeDer[16] >> pulseShapeDer[17] >>
1519 pulseShapeDer[18] >> pulseShapeDer[19] >> pulseShapeDer[20] >>
1520 pulseShapeDer[21] >> pulseShapeDer[22] >> pulseShapeDer[23];
1533 std::vector<float> auxV(3);
1538 "Finished reading noise, calib coeff and pulse shape for each module for "
1540 for (
int iMod = 0; iMod <
nMod; iMod++) {
1542 ATH_MSG_INFO(
" iMod= " << iMod <<
", noise rms FCAL (eta bin 1,2,3,4): "
1545 ATH_MSG_INFO(
" iMod= " << iMod <<
", calib coeff FCAL (eta bin 1,2,3,4): "
1580 if (pulsedataname.empty()) {
1581 ATH_MSG_ERROR(
"Could not locate Fcal_ptweights_table7.data file");
1582 return StatusCode::FAILURE;
1584 pulsedatafile = pulsedataname.c_str();
1585 infile.open(pulsedatafile);
1589 return StatusCode::FAILURE;
1598 const unsigned int colNum = 14;
1600 const unsigned int maxCell = 4;
1601 std::vector<std::string> TTlabel;
1602 TTlabel.resize(colNum);
1603 std::vector<float>
gain;
1604 gain.resize(colNum);
1608 while (
infile >> TTlabel[0] >>
gain[0] >> TTlabel[1] >>
gain[1] >>
1609 TTlabel[2] >>
gain[2] >> TTlabel[3] >>
gain[3] >> TTlabel[4] >>
1610 gain[4] >> TTlabel[5] >>
gain[5] >> TTlabel[6] >>
gain[6] >>
1611 TTlabel[7] >>
gain[7] >> TTlabel[8] >>
gain[8] >> TTlabel[9] >>
1612 gain[9] >> TTlabel[10] >>
gain[10] >> TTlabel[11] >>
gain[11] >>
1613 TTlabel[12] >>
gain[12] >> TTlabel[13] >>
gain[13]) {
1617 ATH_MSG_DEBUG(
" TTlabel[13], gain[13]= " << TTlabel[13] <<
", "
1639 std::string TTlab = TTlabel[
icol];
1642 int eta =
int(TTlab[0]) - 49;
1643 int phi =
int(TTlab[1]) - 65;
1650 if (TTlab.size() > 3) {
1660 if ((
layer == 1 && detZside > 0) || (
layer == 0 && detZside < 0)) {
1661 if (
eta == 0 ||
eta == 2) {
1673 if (
eta == 1 ||
eta == 3) {
1694 std::vector<Identifier> cellIdVec =
m_ttSvc->createCellIDvecLayer(ttId);
1699 std::vector<unsigned int> hashVec;
1701 unsigned int nCell = 0;
1717 hashVec.push_back(fcalHash);
1727 for (
unsigned int iCell = 0; iCell <
maxCell; iCell++) {
1746 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