11 #include <pxd/modules/pxdSimulation/PXDInjectionVetoEmulatorModule.h>
12 #include <vxd/geometry/GeoCache.h>
13 #include <vxd/geometry/GeoTools.h>
35 setDescription(
"The module emulates the timing for gated mode operation of PXD.");
36 setPropertyFlags(c_ParallelProcessingCertified);
38 addParam(
"PXDIBTimingName", m_PXDIBTimingName,
39 "The name of the StoreObjPtr of generated Injection Bg timing", std::string(
""));
40 addParam(
"minTimePXD", m_minTimePXD,
41 "Minimum time for the first passage of a noise bunch that can deposit charge in the PXD in nano seconds", -20000.0);
42 addParam(
"maxTimePXD", m_maxTimePXD,
43 "Maximum time for the first passage of a noise bunch that can deposit charge in the PXD in nano seconds", -10000.0);
44 addParam(
"noiseBunchRevolutionTime",
45 m_revolutionTime,
"Noise bunch revolution time in ns", 10000.0);
46 addParam(
"pxdGatedModeLumiFraction",
47 m_pxdGatedModeLumiFraction,
"Fraction of events which are affected by PXD gated mode", 0.2);
54 m_storePXDIBTiming.registerInDataStore(m_PXDIBTimingName, DataStore::EStoreFlags::c_ErrorIfAlreadyRegistered);
63 m_storePXDIBTiming.create();
67 int triggerGate = gRandom->Integer(m_nGates);
68 m_storePXDIBTiming->setTriggerGate(triggerGate);
72 if (gRandom->Rndm() < m_pxdGatedModeLumiFraction) {isGated =
true;}
73 m_storePXDIBTiming->setGated(isGated);
79 time = gRandom->Rndm() * (m_maxTimePXD - m_minTimePXD) + m_minTimePXD;
81 m_storePXDIBTiming->getGatingStartTimes().push_back(time);
82 m_storePXDIBTiming->getGatingStartTimes().push_back(time + m_revolutionTime);
83 m_storePXDIBTiming->getGatingStartTimes().push_back(time + 2 * m_revolutionTime);
84 m_storePXDIBTiming->getGatingStartTimes().push_back(time + 3 * m_revolutionTime);