|  | ATLAS Offline Software
    | 
 
 
 
Go to the documentation of this file.
   12 #include "Identifier/Identifier.h" 
   24                                          const std::string& 
name,
 
   32     ATH_MSG_DEBUG(
"Retrieved MuonDetectorManager from DetectorStore.");
 
   42         return StatusCode::FAILURE;
 
   51         return StatusCode::FAILURE;
 
   83     return StatusCode::SUCCESS;
 
   92     return StatusCode::SUCCESS;
 
   99     ATH_MSG_DEBUG(
"TgcDigitizationTool::processBunchXing() " << bunchXing);
 
  103     TimedHitCollList hitCollList;
 
  107                                       bunchXing, bSubEvents, eSubEvents)
 
  109         hitCollList.empty()) {
 
  111         return StatusCode::FAILURE;
 
  114                         << 
" TGCSimHitCollection with key " 
  122     for (; iColl != endColl; ++iColl) {
 
  131                         << timeIndex.
time() << 
" index: " << timeIndex.
index()
 
  132                         << 
" type: " << timeIndex.
type());
 
  138     return StatusCode::SUCCESS;
 
  154     while (TGCHitColl != TGCHitCollEnd) {
 
  155         delete (*TGCHitColl);
 
  160     return StatusCode::SUCCESS;
 
  174     return StatusCode::SUCCESS;
 
  184     return StatusCode::SUCCESS;
 
  194     using TimedHitCollList =
 
  202         if (!hitCollection.
isValid()) {
 
  204                           << hitCollection.
name() << 
" from store " 
  205                           << hitCollection.
store());
 
  206             return StatusCode::FAILURE;
 
  215         return StatusCode::SUCCESS;
 
  219     TimedHitCollList hitCollList;
 
  224         return StatusCode::FAILURE;
 
  226     if (hitCollList.empty()) {
 
  228         return StatusCode::FAILURE;
 
  231                       << 
" TGCSimHitCollections with key " 
  241     while (iColl != endColl) {
 
  245                       << p_collection->
size()
 
  249     return StatusCode::SUCCESS;
 
  256     CLHEP::HepRandomEngine* rndmEngine = rngWrapper->
getEngine(ctx);
 
  268     ATH_CHECK(sdoContainer.
record(std::make_unique<MuonSimDataCollection>()));
 
  280         ASDpos = readHandle_ASDpos.cptr();
 
  283             "ASD Position parameters /TGC/DIGIT/ASDPOS must be available for " 
  284             "TGC_Digitization. Check the configuration!");
 
  290         TOffset = readHandle_TimeOffset.cptr();
 
  293             "Timing Offset parameters /TGC/DIGIT/TOFFSET must be available for " 
  294             "TGC_Digitization. Check the configuration!");
 
  300         Crosstalk = readHandle_Crosstalk.cptr();
 
  303             "/TGC/DIGIT/XTALK is not provided. Probabilities of TGC channel " 
  304             "crosstalk will be zero.");
 
  307     std::vector<std::unique_ptr<TgcDigitCollection> > collections;
 
  311         ATH_MSG_DEBUG(
"TgcDigitizationTool::digitizeCore next element");
 
  317             double globalHitTime = 
hitTime(phit);
 
  318             double tof = phit->globalTime();
 
  320                 &hit, globalHitTime, ASDpos, TOffset, Crosstalk, rndmEngine);
 
  326             for (it_digiHits = digiHits->
begin();
 
  327                  it_digiHits != digiHits->
end(); ++it_digiHits) {
 
  337                 Identifier newDigiId = (*it_digiHits)->identify();
 
  338                 uint16_t newBcTag = (*it_digiHits)->bcTag();
 
  346                         "Unable to get TGC hash id from TGC Digit collection " 
  347                         << 
"context begin_index = " << tgcContext.
begin_index()
 
  348                         << 
" context end_index  = " << tgcContext.
end_index()
 
  349                         << 
" the identifier is ");
 
  354                 auto newDigit = std::make_unique<TgcDigit>(newDigiId, newBcTag);
 
  357                 bool duplicate = 
false;
 
  358                 if (coll_hash >= collections.size()) {
 
  359                     collections.resize(coll_hash + 1);
 
  361                 digitCollection = collections[coll_hash].get();
 
  362                 if (
nullptr == digitCollection) {
 
  363                     collections[coll_hash] =
 
  364                         std::make_unique<TgcDigitCollection>(elemId, coll_hash);
 
  365                     digitCollection = collections[coll_hash].get();
 
  368                                   << 
" BC tag = " << newBcTag
 
  369                                   << 
" Coll. key = " << coll_hash);
 
  370                     digitCollection->
push_back(std::move(newDigit));
 
  374                     for (it_tgcDigit = digitCollection->
begin();
 
  375                          it_tgcDigit != digitCollection->
end(); ++it_tgcDigit) {
 
  376                         if (newDigiId == (*it_tgcDigit)->identify() &&
 
  377                             newBcTag == (*it_tgcDigit)->bcTag()) {
 
  383                                           << 
" BC tag = " << newBcTag);
 
  389                         digitCollection->
push_back(std::move(newDigit));
 
  392                                       << 
" BC tag = " << newBcTag);
 
  397                     static const double invalid_pos = -99999.;
 
  414                     std::vector<MuonSimData::Deposit> deposits;
 
  415                     deposits.emplace_back(
 
  421                     sdoContainer->insert(std::make_pair(newDigiId, 
simData));
 
  429     for (
size_t coll_hash = 0; coll_hash < collections.size(); ++coll_hash) {
 
  430         if (collections[coll_hash]) {
 
  432                 collections[coll_hash].release(), coll_hash));
 
  436     return StatusCode::SUCCESS;
 
  
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Const iterator class for DataVector/DataList.
const_pointer_type cptr()
Dereference the pointer.
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override final
insert collection into container with id hash if IDC should not take ownership of collection,...
IdContext channel_context() const
id for channel
const std::string & name() const
Return the StoreGate ID for the referenced object.
size_type end_index() const
AtlasHitsVector< TGCSimHit > TGCSimHitCollection
index_type index() const
the index of the component event in PileUpEventInfo
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool ignoreTruthLink(const T &p, bool vetoPileUp)
Helper function for SDO creation in PileUpTools.
bool empty() const
Test if the key is blank.
bool nextDetectorElement(const_iterator &b, const_iterator &e)
sets an iterator range with the hits of current detector element returns a bool when done
std::list< value_t > type
type of the collection of timed data object
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
const Amg::Vector3D & localPosition() const
StatusCode initialize()
Initializes TgcHitIdHelper, TgcIdHelper and random number of a stream for the digitization.
void setLevel(MSG::Level lvl)
Change the current logging level.
size_type begin_index() const
void insert(const PileUpTimeEventIndex &timeEventIndex, const AtlasHitsVector< HIT > *inputCollection)
::StatusCode StatusCode
StatusCode definition for legacy code.
std::string store() const
Return the name of the store holding the object we are proxying.
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
static const TgcHitIdHelper * GetHelper()
void show() const
Print out in hex form.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const Amg::Transform3D & localToGlobalTransf(const Identifier &id) const
Returns the local -> global transformation x-axis: Parallel to the wires (strips) if the Identifier b...
Identifier elementID(int stationName, int stationEta, int stationPhi) const
const TgcIdHelper * tgcIdHelper() const
A wrapper class for event-slot-local random engines.
time_type time() const
bunch xing time in ns
Helpers for checking error return status codes and reporting errors.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
static HepMcParticleLink getRedirectedLink(const HepMcParticleLink &particleLink, uint32_t eventIndex, const EventContext &ctx)
Return a HepMcParticleLink pointing at the same particle, but in a different GenEvent.
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
size_type module_hash_max() const
the maximum hash value
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
TgcDigitCollection * executeDigi(const TGCSimHit *hit, const double globalHitTime, const TgcDigitASDposData *ASDpos, const TgcDigitTimeOffsetData *TOffset, const TgcDigitCrosstalkData *Crosstalk, CLHEP::HepRandomEngine *rndmEngine)
A single hit can be digitized in the two directions independently: R and phi directions.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
unsigned short eventId() const
the index of the component event in PileUpEventInfo.
#define ATH_MSG_WARNING(x)
virtual int get_hash(const Identifier &id, IdentifierHash &hash_id, const IdContext *context=0) const override
Create hash id from compact id (return == 0 for OK)
IdContext module_context() const
id for module
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...
a struct encapsulating the identifier of a pile-up event
PileUpType type() const
the pileup type - minbias, cavern, beam halo, signal?
This class saves the "context" of an expanded identifier (ExpandedIdentifier) for compact or hash ver...
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.