|
ATLAS Offline Software
|
Go to the documentation of this file.
32 (
const std::string&
type,
33 const std::string&
name,
37 m_caloEtaSelection( false ),
38 m_caloPhiSelection( false ),
39 m_caloLayerSelection( false ),
40 m_caloSelection( false ),
41 m_tileDLayerOption( false ) {
43 declareProperty(
"CaloEtaCut",
m_etaCut );
44 declareProperty(
"CaloPhiCut",
m_phiCut );
47 declareProperty(
"CaloDetectors",
m_caloNums );
65 const unsigned int nSubCalo = 7;
70 ATH_MSG_INFO(
" *** SCFillerTool: No calorimeter selection" );
71 return StatusCode::SUCCESS;
74 <<
" More than " << nSubCalo <<
" calo specified. "
75 <<
"Must be wrong. Stop.";
76 return StatusCode::FAILURE;
82 <<
"Invalid calo specification:"
84 return StatusCode::FAILURE;
98 return StatusCode::FAILURE;
109 return StatusCode::FAILURE;
117 return StatusCode::FAILURE;
122 return StatusCode::FAILURE;
131 return StatusCode::SUCCESS;
154 return StatusCode::SUCCESS;
172 ATH_MSG_INFO(
"**** after fillHashTables in first event");
178 CONTAINER::const_iterator f_cell =
p.begin();
179 CONTAINER::const_iterator l_cell =
p.end();
180 for( ; f_cell != l_cell; ++f_cell ) {
193 int pn = ((
key >> 28) & 0
x1) ? 1: -1;
194 int calo = ((
key >> 24) & 0xf)*
pn;
195 int region = (
key>>20) & 0xf;
196 unsigned int lay = (
key>>16) & 0xf;
197 int ieta = (
key>>8) & 0xff;
198 int jphi =
key & 0xff;
202 int lardet = abs((
key >> 24) & 0xf);
205 std::vector< unsigned int >::const_iterator theFound =
224 m_calo->push_back( calo );
227 m_ieta->push_back( ieta );
228 m_jphi->push_back( jphi );
230 m_eta->push_back( feta );
236 return StatusCode::SUCCESS;
251 CONTAINER::const_iterator f_cell =
p.begin();
252 CONTAINER::const_iterator l_cell =
p.end();
254 for( ; f_cell != l_cell; ++f_cell ) {
257 int posneg = (
cell->eta()>=0.0) ? 1: -1;
267 std::cout <<
"SCFillerTool::dumpHashTables() [ONLY EM BARREL] ==> posneg,lay,ieta,jphi= " << posneg <<
", " << lay <<
", " << ieta <<
", " << jphi <<
" ID: " <<
id <<
" sc_hash: " << sc_hash << std::endl;
274 int scID = (*it).first;
276 std::vector<const CaloCell*>
v = (*it).second;
278 int pn = ((
key >> 28) & 0
x1) ? 1: -1;
279 int calo = ((
key >> 24) & 0xf)*
pn;
280 int region = (
key>>20) & 0xf;
281 unsigned int lay = (
key>>16) & 0xf;
282 int ieta = (
key>>8) & 0xff;
283 int jphi =
key & 0xff;
284 if (abs(calo)==1 &&
pn>0) {
285 std::cout <<
"SCFillerTool::dumpHashTables() ===> scID = " << scID <<
" calo,pn,region,lay,ieta,jphi: " << calo <<
", " <<
pn <<
", " << region <<
", " << lay <<
", " << ieta <<
", " << jphi << std::endl;
286 std::cout <<
"SCFillerTool::dumpHashTables() ===> scID = " << scID <<
" No. of cells: " << nl << std::endl;
287 std::cout <<
"SCFillerTool::dumpHashTables() ===> " ;
289 std::cout <<
cell <<
", " ;
291 std::cout <<
"" << std::endl;
300 CONTAINER::const_iterator f_cell =
p.begin();
301 CONTAINER::const_iterator l_cell =
p.end();
303 int reg,lay,ieta,jphi;
304 int sc_side, sc_calo, sc_region, sc_layer, sc_ieta, sc_jphi;
309 for( ; f_cell != l_cell; ++f_cell ) {
313 sc_side = (
cell->eta()>=0.0) ? 1: 0;
335 sc_ieta =
int(ieta/4);
337 }
else if ( lay == 1 ) {
338 sc_ieta = (reg==0) ?
int(ieta/8) : 56+ieta;
339 sc_jphi = (reg==0) ? jphi:
int(jphi/4);
340 }
else if ( lay == 2 ) {
341 sc_ieta = (reg==0) ? ieta: 56 + ieta;
342 sc_jphi =
int(jphi/4);
343 }
else if ( lay == 3 ) {
344 sc_ieta =
int(ieta/2);
345 sc_jphi =
int(jphi/4);
350 sc_ieta =
int(ieta/4);
353 }
else if (lay == 1) {
355 sc_ieta = (reg<=1) ? 0 : ((reg==2) ? 1+
int(ieta/8) : ((reg==3) ? 13+
int(ieta/4) : ((reg==4) ? 25+
int(ieta/4): 41)));
357 sc_region = (reg<2) ? 0: reg-1;
359 sc_ieta = (reg==0) ? 0 : 1+ieta;
360 sc_jphi =
int(jphi/4);
361 sc_region = (ieta<3) ? 0: ((ieta<15) ? 1 : ((ieta<23) ? 2 : ((ieta<39) ? 3 : 4)));
363 sc_ieta =
int(ieta/2);
364 sc_jphi =
int(jphi/4);
365 sc_region = (ieta<6) ? 1: ((ieta<10) ? 2 : ((ieta<18) ? 3: 4));
373 sc_ieta = (ieta<6) ?
int(ieta/2) : 47;
374 sc_jphi =
int(jphi/2);
375 sc_region = (ieta<6) ? 5 : 6;
383 sc_ieta = (sc_region==0) ? ieta : 10+ieta;
392 const int c64 =
c%64;
395 sc_ieta = 4-
int((
c%16)/4);
396 int jphip = 8*(
s-14) + 3 + 4*
int(
c/64)-
int(c64/16);
397 int jphin = 8*(
s-14) + 7 -
int(
c/16);
398 sc_jphi = (sc_side)>0 ? jphip : jphin;
401 sc_ieta = ((
c%32)<16 ? 4 : 8) -
int((
c%32)/4);
402 int jphip = 4*(
s-10) + 1 + 2*
int(
c/64)-
int(c64/32);
403 int jphin = ((
s>=12) ? 14 -4*(
s-12): 6 -4*(
s-10) ) +
int(c64/32) -2*
int(
c/64);
404 sc_jphi = (sc_side>0) ? jphip : jphin;
407 ieta = 15-
int(c64%16) + 16*
int(c64/16);
408 sc_ieta =
int(ieta/4);
409 int jphip =
int(
c/64) + 2*(
s- ((
s==9) ? 2 : 1));
410 int jphin = ((
s<5) ? 7 - 2*(
s-1) : 15 - 2*(
s-((
s==9)?6:5))) -
int(
c/64);
411 sc_jphi = (sc_side>0) ? jphip : jphin;
414 }
else if (c64>=16 && c64<32 ) {
416 }
else if (c64>=32 && c64<48 ) {
435 if( sc_ieta<0 || sc_jphi<0 || sc_calo<=0 || sc_region<0 || sc_layer<0 )
continue;
439 if (sc_calo==6 || sc_calo==7) {
443 int sc_hash = (sc_side << 28) | ( sc_calo << 24 ) | (sc_region << 20 ) | ( sc_layer << 16 ) | ( sc_ieta << 8 ) | ( sc_jphi );
450 int scID = (*it).first;
452 std::vector<const CaloCell*>
v = (*it).second;
474 for( vit=
v.begin(); vit!=
v.end(); ++vit) {
475 feta += (*vit)->
eta();
476 fphi += (*vit)->phi();
JetConstituentVector::iterator iterator
int phi(const Identifier id) const
return phi according to :
int eta(const Identifier id) const
return eta [0,9] outer part [0,3] inner part
std::string find(const std::string &s)
return a remapped string
bool is_lar_fcal(Identifier id) const
bool is_em_endcap_outer(const Identifier id) const
test if the id belongs to the EM Endcap outer wheel
int side(const Identifier &id) const
int slot(const HWIdentifier id) const
Return the slot number of a hardware cell identifier: slot = [1,15] Slot-ID in top part of the crat...
int module(const Identifier id) const
module [1,3]
int region(const Identifier id) const
return region according to :
bool is_tile_extbarrel(const Identifier &id) const
int sampling(const Identifier id) const
return sampling according to :
virtual StatusCode addVariable(const std::string &name, const std::type_info &ti, void *&ptr, const std::string &docstring="", const void *defval=0)
Add a variable to the tuple.
int tower(const Identifier &id) const
int eta(const Identifier id) const
return eta according to :
Block filler tool for noisy FEB information.
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
int module(const Identifier &id) const
::StatusCode StatusCode
StatusCode definition for legacy code.
#define CHECK(...)
Evaluate an expression and check for errors.
bool is_tile(Identifier id) const
bool is_lar_hec(Identifier id) const
int sampling(const Identifier &id) const
Helpers for checking error return status codes and reporting errors.
StatusCode initialize(bool used=true)
Container class for CaloCell.
bool is_em_endcap_inner(const Identifier id) const
test if the id belongs to the EM Endcap inner wheel
#define REPORT_MESSAGE(LVL)
Report a message.
Data object for each calorimeter readout cell.
bool is_em_barrel(const Identifier id) const
test if the id belongs to the EM barrel
int sampling(const Identifier id) const
return sampling [0,3] (only 0 for supercells)
double eta() const
The pseudorapidity ( ) of the particle.
bool is_tile_barrel(const Identifier &id) const
Test of an Identifier to see if it belongs to a particular part of the calorimeter.
int region(const Identifier id) const
return region [0,1]
bool is_lar_em(Identifier id) const
int phi(const Identifier id) const
return phi[0,63] outer part [0,31] inner part