ATLAS Offline Software
Loading...
Searching...
No Matches
TBNoiseWrite Class Reference

#include <TBNoiseWrite.h>

Inheritance diagram for TBNoiseWrite:
Collaboration diagram for TBNoiseWrite:

Classes

struct  NoiseHeader

Public Member Functions

 TBNoiseWrite (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TBNoiseWrite ()
virtual StatusCode initialize () override
virtual StatusCode execute () override
virtual StatusCode finalize () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void clear ()
StatusCode getXcryoYtable (float &x, float &y, float &eBeam)
 Get Xcryo and Ytable from a text file.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

int m_nEvent
int m_nEventRandomTrigger
bool m_first
NoiseHeader m_header
std::vector< unsigned int > * m_cell_id
std::vector< float > * m_cell_energy
std::string m_digitContainerName
std::string m_caloCellContainerName
std::string m_headerTreeName
std::string m_noiseTreeName
std::string m_rootfile_name
TFile * m_rootfile
TTree * m_header_tree
TTree * m_tree
std::string m_txtFileWithXY
 Text file containing xCryo and yTable.
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 20 of file TBNoiseWrite.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TBNoiseWrite()

TBNoiseWrite::TBNoiseWrite ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 25 of file TBNoiseWrite.cxx.

26 :
27 AthAlgorithm(name, pSvcLocator),
29 m_cell_id(0),
31 m_caloCellContainerName("AllCalo"),
32 m_headerTreeName("HeaderTree"),
33 m_noiseTreeName("NoiseTree"),
34 m_rootfile_name("tbh6tree_noise.root"),
35 m_rootfile(0),
37 m_tree(0),
38 //m_calo_id(0),
39 //m_calo_dd_man(0),
40 m_txtFileWithXY("xcryo_ytable.txt")
41{
43 declareProperty("RootFileName",m_rootfile_name);
44 declareProperty("NoiseTreeName",m_noiseTreeName);
45
46 m_header.m_nRun = 0;
47 m_header.m_beamMom = 0;
48 m_header.m_xCryo = 0;
49 m_header.m_yTable = 0;
50}
AthAlgorithm()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::string m_txtFileWithXY
Text file containing xCryo and yTable.
TFile * m_rootfile
std::string m_noiseTreeName
std::vector< unsigned int > * m_cell_id
std::string m_caloCellContainerName
std::string m_headerTreeName
int m_nEventRandomTrigger
TTree * m_tree
std::string m_rootfile_name
NoiseHeader m_header
std::vector< float > * m_cell_energy
TTree * m_header_tree

◆ ~TBNoiseWrite()

TBNoiseWrite::~TBNoiseWrite ( )
virtual

Definition at line 52 of file TBNoiseWrite.cxx.

53{ }

Member Function Documentation

◆ clear()

void TBNoiseWrite::clear ( )
private

Definition at line 95 of file TBNoiseWrite.cxx.

96{
97 m_cell_id->clear();
98 m_cell_energy->clear();
99}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode TBNoiseWrite::execute ( )
overridevirtual

Definition at line 101 of file TBNoiseWrite.cxx.

102{
103 m_nEvent++;
104 ATH_MSG_DEBUG ( "Executing TBNoiseWrite " );
105
106 // Retrieve Event Info
107 const TBEventInfo* theEventInfo;
108 ATH_CHECK( evtStore()->retrieve(theEventInfo,"TBEventInfo") );
109 unsigned short evType = theEventInfo->getEventType();
110 ATH_MSG_DEBUG ( "Event Type found " << evType );
111 if (evType != 3) return StatusCode::FAILURE;
112
113 // Do first event initialization (run header filling)
114 if (m_first) {
115 m_first = false;
116 // Fill run header
117 m_header.m_nRun = theEventInfo->getRunNum();
118 m_header.m_beamMom = theEventInfo->getBeamMomentum();
119 // Get xcryo and ytable from a file
120 if (!this->getXcryoYtable(m_header.m_xCryo,m_header.m_yTable,
121 m_header.m_beamMom)) {
122 ATH_MSG_ERROR ( "xCryo and yTable are not found for run " <<
123 m_header.m_nRun << " in file " << m_txtFileWithXY );
124 return StatusCode::FAILURE;
125 }
126 ATH_MSG_INFO ( "nRun = " << m_header.m_nRun << ", beamMomentum = "
127 << m_header.m_beamMom << " GeV, CryoX = " << m_header.m_xCryo
128 << ", tableY = " << m_header.m_yTable );
129 m_header_tree->Fill();
130 }
131
132 this->clear();
133
134 // Get cell information
135 const CaloCellContainer* cellContainer = 0;
137
138 // Cell loop
139 for (const CaloCell* cell : *cellContainer) {
140 unsigned int id = cell->ID().get_identifier32().get_compact();
141 m_cell_id->push_back(id);
142 m_cell_energy->push_back((float)cell->energy());
143 }
144 // Fill the tree
145 m_tree->Fill();
147 return StatusCode::SUCCESS;
148
149}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
float getBeamMomentum() const
Definition TBEventInfo.h:73
int getEventType() const
Definition TBEventInfo.h:71
unsigned int getRunNum() const
Definition TBEventInfo.h:72
StatusCode getXcryoYtable(float &x, float &y, float &eBeam)
Get Xcryo and Ytable from a text file.
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

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.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

StatusCode TBNoiseWrite::finalize ( )
overridevirtual

Definition at line 84 of file TBNoiseWrite.cxx.

85{
86 ATH_MSG_INFO ( "finalize(): (invoked/random) ("<< m_nEvent
87 << "/" << m_nEventRandomTrigger << ")" );
88 ATH_MSG_INFO ( "Print contents of " << m_noiseTreeName );
89 m_rootfile->Print();
90 m_rootfile->Write();
91 m_rootfile->Close();
92 return StatusCode::SUCCESS;
93}

◆ getXcryoYtable()

StatusCode TBNoiseWrite::getXcryoYtable ( float & x,
float & y,
float & eBeam )
private

Get Xcryo and Ytable from a text file.

Definition at line 151 of file TBNoiseWrite.cxx.

151 {
152
153 ATH_MSG_DEBUG ( "in getXcryoYtable(float x, float y)" );
154
155 std::ifstream xyFile;
156 std::string line;
157 std::string filename = PathResolver::find_file(m_txtFileWithXY, "DATAPATH");
158 xyFile.open(filename.c_str());
159 if (!xyFile.is_open()) {
160 ATH_MSG_ERROR ( "File " << m_txtFileWithXY << " fail to open in $DATAPATH");
161 return StatusCode::FAILURE;
162 }
163
164 while ( getline(xyFile, line, '\n') ) {
165 int run;
166 std::istringstream buf(line);
167 e = 0;
168 buf >> run >> x >> y >> e;
169 ATH_MSG_DEBUG ( "run,x,y,e= "<<run<<" "<<x<<" "<<y<<" "<<e);
170 if (run == m_header.m_nRun && xyFile.good()) return StatusCode::SUCCESS;
171 }
172
173 return StatusCode::FAILURE;
174}
#define y
#define x
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)

◆ initialize()

StatusCode TBNoiseWrite::initialize ( )
overridevirtual

Definition at line 55 of file TBNoiseWrite.cxx.

56{
57 // Cell vectors
58 m_cell_id = new std::vector<unsigned int>;
59 m_cell_energy = new std::vector<float>;
60
61 // Open file and create TTrees
62 m_rootfile = new TFile(m_rootfile_name.data(), "RECREATE");
63 if (!m_rootfile->IsOpen()) {
64 ATH_MSG_FATAL ( "Cann't open Root file" );
65 return StatusCode::FAILURE;
66 }
68 new TTree(m_headerTreeName.c_str(), m_headerTreeName.c_str());
69 m_tree = new TTree(m_noiseTreeName.c_str(), m_noiseTreeName.c_str());
70
71 // Define branches
72 // Header
74 Branch("Header",&m_header.m_nRun,"nrun/I:ener/F:xcryo:ytable");
75 // Cell parameters
76 m_tree->Branch("cell_id", &m_cell_id);
77 m_tree->Branch("cell_ener", &m_cell_energy);
78
79 ATH_MSG_INFO ( "end of initialize()" );
80 return StatusCode::SUCCESS;
81}
#define ATH_MSG_FATAL(x)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

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.

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

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.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_WARNING(x)
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_caloCellContainerName

std::string TBNoiseWrite::m_caloCellContainerName
private

Definition at line 55 of file TBNoiseWrite.h.

◆ m_cell_energy

std::vector<float>* TBNoiseWrite::m_cell_energy
private

Definition at line 51 of file TBNoiseWrite.h.

◆ m_cell_id

std::vector<unsigned int>* TBNoiseWrite::m_cell_id
private

Definition at line 50 of file TBNoiseWrite.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_digitContainerName

std::string TBNoiseWrite::m_digitContainerName
private

Definition at line 54 of file TBNoiseWrite.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_first

bool TBNoiseWrite::m_first
private

Definition at line 36 of file TBNoiseWrite.h.

◆ m_header

NoiseHeader TBNoiseWrite::m_header
private

Definition at line 45 of file TBNoiseWrite.h.

◆ m_header_tree

TTree* TBNoiseWrite::m_header_tree
private

Definition at line 60 of file TBNoiseWrite.h.

◆ m_headerTreeName

std::string TBNoiseWrite::m_headerTreeName
private

Definition at line 56 of file TBNoiseWrite.h.

◆ m_nEvent

int TBNoiseWrite::m_nEvent
private

Definition at line 34 of file TBNoiseWrite.h.

◆ m_nEventRandomTrigger

int TBNoiseWrite::m_nEventRandomTrigger
private

Definition at line 35 of file TBNoiseWrite.h.

◆ m_noiseTreeName

std::string TBNoiseWrite::m_noiseTreeName
private

Definition at line 57 of file TBNoiseWrite.h.

◆ m_rootfile

TFile* TBNoiseWrite::m_rootfile
private

Definition at line 59 of file TBNoiseWrite.h.

◆ m_rootfile_name

std::string TBNoiseWrite::m_rootfile_name
private

Definition at line 58 of file TBNoiseWrite.h.

◆ m_tree

TTree* TBNoiseWrite::m_tree
private

Definition at line 61 of file TBNoiseWrite.h.

◆ m_txtFileWithXY

std::string TBNoiseWrite::m_txtFileWithXY
private

Text file containing xCryo and yTable.

Definition at line 64 of file TBNoiseWrite.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: