ATLAS Offline Software
Loading...
Searching...
No Matches
TileCellFakeProb.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
4
6
10
14
15
16
17// Constructor:
18
20 const std::string& name, const IInterface* parent)
21 : base_class(type, name, parent)
22 , m_caloID(nullptr)
23 , m_tileID(nullptr)
24 , m_tileHWID(nullptr)
25 , m_cabling(nullptr)
26{
27
28}
29
31
32 // Get the CaloCell_ID helper from the detector store
33 CHECK( detStore()->retrieve(m_caloID, "CaloCell_ID") );
34
35 // Get the TileID helper from the detector store
36 CHECK( detStore()->retrieve(m_tileID, "TileID") );
37
38 // Get the TileHWID helper from the detector store
39 CHECK( detStore()->retrieve(m_tileHWID, "TileHWID") );
40
41 ATH_CHECK( m_cablingSvc.retrieve());
42
43 // Instantiate Cabling Svc to initialize pointers to helpers there
44 m_cabling = m_cablingSvc->cablingService();
45 if (m_cabling == 0) {
46 ATH_MSG_FATAL( " Cannot get instance of TileCablingService" );
47 return StatusCode::FAILURE;
48 }
49
50 // process properties from jobOptions
52
53 return StatusCode::SUCCESS;
54}
55
56// Desctructor
59
60// MakeCorrection: This is called with a pointer to the Cell Object.
61double TileCellFakeProb::wtCell(const CaloCell* theCell) const {
62
63 Identifier id = theCell->ID();
64 double totalweight = 1.0; // default weight
65
66 if (m_tileID->is_tile(id)) {
67 std::map<Identifier, double>::const_iterator cur = m_celllist.find(id);
68
69 if (cur != m_celllist.end()) {
70 totalweight = (cur->second);
71 ATH_MSG_VERBOSE( "eta = " << theCell->eta()
72 << ", phi = " << theCell->phi()
73 << ", weight = " << totalweight );
74 }
75 }
76
77 return totalweight;
78}
79
81
82// ros 1 to 4 ReadOutSystem number ( 1,2 = pos/neg Barrel (side A/C)
83// 3,4 = pos/neg Ext.Barrel (side A/C) )
84// drawer 0 to 63 64 drawers (modules) in one cylinder (phi-slices)
85// channel 0 to 47 channel number in the drawer
86// adc 0 to 1 ADC number for the channel (0 = low gain, 1 = high gain)
87
88 // read in dead drawers from jopOptions
89 std::vector<std::string>::const_iterator itrStringID = m_deadDrawerInput.begin();
90 for (; itrStringID != m_deadDrawerInput.end(); ++itrStringID) {
91 std::string theString = *itrStringID;
92 std::stringstream is;
93 is << theString << std::endl;
94
95 int iros, idrawer;
96 double weight;
97 is >> iros >> idrawer >> weight;
98
99 ATH_MSG_DEBUG( "scale ROS " << iros
100 << " Drawer " << idrawer
101 << " with weight=" << weight );
102
103 // loop over all TileCal cells and check if they belong to dead drawers
104 int sub_calo_num = (int) CaloCell_ID::TILE;
105 IdentifierHash hmin, hmax;
106 m_caloID->calo_cell_hash_range(sub_calo_num, hmin, hmax);
107
108 int nCells = 0;
109 for (unsigned int i = hmin; i < hmax; ++i) {
110 Identifier id = m_caloID->cell_id((IdentifierHash) i);
111 HWIdentifier myhwid = m_cabling->s2h_drawer_id(id);
112 int ros = m_tileHWID->ros(myhwid);
113 int drawer = m_tileHWID->drawer(myhwid);
114
115 if ((ros == iros) && (drawer == idrawer)) {
116 m_celllist[id] = weight;
117 ++nCells;
118 }
119 }
120 ATH_MSG_DEBUG( "looped over " << (hmax - hmin)
121 << " cells, " << nCells << " cells matched" );
122 }
123
124 return StatusCode::SUCCESS;
125}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
Helpers for checking error return status codes and reporting errors.
#define CHECK(...)
Evaluate an expression and check for errors.
Data object for each calorimeter readout cell.
Definition CaloCell.h:57
virtual double phi() const override final
get phi (through CaloDetDescrElement)
Definition CaloCell.h:375
virtual double eta() const override final
get eta (through CaloDetDescrElement)
Definition CaloCell.h:382
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition CaloCell.h:295
This is a "hash" representation of an Identifier.
Gaudi::Property< std::vector< std::string > > m_deadDrawerInput
Property: List of "dead" drawers.
virtual double wtCell(const CaloCell *theCell) const override
implementation of ICellWeightTool weighting method
TileCellFakeProb(const std::string &type, const std::string &name, const IInterface *parent)
Standard constructor.
virtual StatusCode initialize() override
AlgTool Initialization.
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
std::map< Identifier, double > m_celllist
List of "dead" cells and their weights.
StatusCode createMiscalibratedCellList()
Reads in properties and creates list of miscalibrated cells.
virtual ~TileCellFakeProb()
Standard destructor.
const TileCablingService * m_cabling
Pointer to TileCablingService.
const TileID * m_tileID
Pointer to TileID.
const TileHWID * m_tileHWID
Pointer to TileHWID.
const CaloCell_ID * m_caloID
Pointer to CaloCellID.
double hmax(TH1 *&h)
Definition listroot.cxx:115