|
ATLAS Offline Software
|
Go to the documentation of this file.
16 #include "GaudiKernel/ThreadLocalContext.h"
19 #include "TProfile2D.h"
34 declareInterface<IMonitorToolBase>(
this);
65 return StatusCode::SUCCESS;
128 m_h_CellsE->GetXaxis()->SetTitle(
"Cell Energy [GeV]");
139 m_h_CellsEta->GetYaxis()->SetTitle(
"Mean energy [GeV]");
154 m_h_CellsPhi->GetYaxis()->SetTitle(
"Mean energy [GeV]");
270 return StatusCode::SUCCESS;
276 const EventContext& ctx = Gaudi::Hive::currentContext();
283 if(
sc.isFailure() || !ifPass)
return StatusCode::SUCCESS;
292 if (! cellContHandle.
isValid()) {
ATH_MSG_WARNING(
"No CaloCell container found in TDS");
return StatusCode::FAILURE; }
300 for ( ;
it!=it_e;++
it) {
309 float cellen =
cell->energy();
310 float cellenGeV=cellen/
GeV;
313 bool badc=
cell->badcell();
314 float cellnoisedb = 0.;
318 cellnoisedb =
noise->getNoise(
id,
cell->gain());
320 cellnoisedb =
noise->getEffectiveSigma(
id,
cell->gain(),
cell->energy());
323 if (std::isfinite(cellnoisedb) && cellnoisedb > 0 && cellen != 0 && !badc) rs= cellen / cellnoisedb;
327 if (fabs(rs)>4.0 && !badc && rs != 999 ) {
334 ATH_MSG_DEBUG(
"TileCalCellMonTool: Cell rs=" << rs <<
" e=" << cellen <<
" eta=" <<
eta <<
" phi="<<
phi );
336 <<
" tower=" <<
side*tower );
362 return StatusCode::SUCCESS;
368 return StatusCode::SUCCESS;
384 if( (!
t1) || (!
t2) || (!
t3) ) {
388 int nb=
t1->GetNbinsX();
389 for(
int ix=1;ix<
nb+1;ix++){
390 Double_t ierr1=(
t1->GetBinError(ix))*1000;
391 Double_t ent =
t1->GetBinEntries(ix);
392 Double_t ierr2=
t2->GetBinError(ix);
393 Double_t ienn2=
t2->GetBinContent(ix);
395 if (ienn2>0) Rat=ierr1/ienn2;
397 if (ent>0) er1=ierr1/sqrt(ent);
399 if (ienn2>0) er2=ierr2/ienn2;
400 double Err=Rat*sqrt( (er1*er1) + (er2*er2) );
401 t3->SetBinContent(ix,Rat);
402 t3->SetBinError(ix,Err);
404 t3->SetEntries(
nb );
def retrieve(aClass, aKey=None)
Const iterator class for DataVector/DataList.
Scalar phi() const
phi method
Scalar eta() const
pseudorapidity method
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
std::vector< LUCID_RawData_p1 > t3
int side(const Identifier &id) const
std::vector< ALFA_RawDataCollection_p1 > t1
int sample(const Identifier &id) const
CaloCellContainer::const_iterator beginConstCalo(CaloCell_ID::SUBCALO caloNum) const
get const iterators on cell of just one calo
int tower(const Identifier &id) const
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
int module(const Identifier &id) const
def TProfile(*args, **kwargs)
::StatusCode StatusCode
StatusCode definition for legacy code.
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
StatusCode initialize(bool used=true)
Wrapper to avoid constant divisions when using units.
Container class for CaloCell.
std::vector< ALFA_RawDataContainer_p1 > t2
Data object for each calorimeter readout cell.
#define ATH_MSG_WARNING(x)
CaloCellContainer::const_iterator endConstCalo(CaloCell_ID::SUBCALO caloNum) const
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
IdentifierHash cell_hash(const Identifier &cell_id) const
fast conversion from ID to hash for cells