10 #include "Identifier/Identifier.h"
42 m_nEvents(0), m_runNumber(0),
74 return StatusCode::SUCCESS;
84 return StatusCode::SUCCESS;
95 return StatusCode::FAILURE;
105 if (not rdoContainer.
isValid()) {
107 return StatusCode::FAILURE;
110 if (not trkCollection.
isValid()) {
112 return StatusCode::FAILURE;
119 ATH_MSG_DEBUG (
"Couldn't retrieve VertexContainer with key: PrimaryVertices");
120 return StatusCode::SUCCESS;
123 int countVertices(0);
126 if ( vx-> nTrackParticles() >= 3) countVertices++;
129 if (countVertices < 1) {
130 ATH_MSG_INFO(
"no vertices with at least 3 tracks found" );
131 return StatusCode::SUCCESS;
135 int countRDOhitsInEvent(0);
138 if (not TRTCollection)
continue;
140 countRDOhitsInEvent++;
143 if (countRDOhitsInEvent>100000) {
144 ATH_MSG_INFO(
"N RDO hits in event greater than 100000: " << countRDOhitsInEvent <<
", exiting" );
148 if (trkCollection->size() > 10) {
149 ATH_MSG_INFO(
"N tracks greater than 10: " << trkCollection->size() <<
", exiting" );
158 std::vector<Identifier> holeIdentifiers;
159 std::vector<Identifier> holeIdentifiersWithHits;
163 const Trk::Perigee* perigee = (*trackIt)->perigeeParameters();
164 if ( not perigee ) {
ATH_MSG_ERROR(
"Trk::Perigee missing" );
continue; }
165 if ( std::abs(perigee->pT())/
CLHEP::GeV < 1. )
continue;
168 if ( not trackStates ) {
ATH_MSG_ERROR(
"Trk::TrackStateOnSurface empty" );
continue; }
170 int n_pixel_hits(0), n_sct_hits(0), n_trt_hits(0);
172 if ( *trackStatesIt ==
nullptr ) {
ATH_MSG_ERROR(
"*trackStatesIt == 0" );
continue; }
180 if (n_pixel_hits<2 || n_sct_hits < 6 || n_trt_hits<15)
continue;
188 if ( *trackStatesIt ==
nullptr ) {
ATH_MSG_ERROR(
"*trackStatesIt == 0" );
continue; }
193 if ( not driftCircleOnTrack )
continue;
201 double unbiased_locR = unbiased_track_parameters->parameters()[
Trk::locR];
202 if ( std::abs(unbiased_locR) >
m_locR_cut )
continue;
217 if (
holes==
nullptr )
continue;
223 if (!track_parameters) {
ATH_MSG_WARNING(
"m_trt_hole_finder track_parameters missing" );
continue; }
231 holeIdentifiers.push_back(
id );
242 if (TRTCollection==
nullptr)
continue;
249 if (
std::find(holeIdentifiers.begin(), holeIdentifiers.end(),
id) != holeIdentifiers.end())
250 holeIdentifiersWithHits.push_back(
id );
258 for (
unsigned int i=0;
i<holeIdentifiers.size();
i++) {
266 if (
std::find(holeIdentifiersWithHits.begin(), holeIdentifiersWithHits.end(),
id) != holeIdentifiersWithHits.end())
293 return StatusCode::FAILURE;
295 fprintf(
f,
"%d %d %d %d %d %d %d %d %d \n", 0, 0, 0, 0, 0, 0, 0, 0,
m_nEvents);
296 for (
size_t i=0;
i<2;
i++)
for (
size_t j=0; j<32; j++)
for (
size_t k=0;
k<
nAllStraws;
k++) {
297 int side = (
i>0)?-1:1;
298 if (
k>=1642)
side *= 2;
299 fprintf(
f,
"%d %zu %zu",
side, j,
k);
304 return StatusCode::SUCCESS;
308 ATH_MSG_INFO(
"InDet::TRT_StrawStatus::printDetailedInformation() " );
321 ATH_MSG_INFO(
"if the code crashes on the next line, there is a problem with m_TRTStrawStatusSummarySvc not being loaded " );
322 ATH_MSG_INFO(
"in that case, running with reco turned on normally solves the problem, know of no better solution at the moment" );
323 ATH_MSG_INFO(
"if you do not need the detailed print information, you can also just set printDetailedInformation to 0 to avoid this crash" );
329 for (
int j=0; j<6; j++) fprintf(
f,
"%d ",
index[j]);
330 fprintf(
f,
"%d %d %d %d %d\n", chip, HVpad,
status, statusTemporary, statusPermanent);
344 const int numberOfStraws[74] = { 0, 15, 31, 47, 63, 79, 96, 113, 130, 147, 164, 182, 200, 218, 236, 254, 273, 292, 311, 329,
345 348, 368, 388, 408, 428, 448, 469, 490, 511, 532, 553, 575, 597, 619, 641, 663, 686, 709, 732, 755, 778, 802, 826, 849,
346 872, 896, 920, 944, 968, 993, 1018, 1043, 1068, 1093, 1119, 1145, 1171, 1197, 1223, 1250, 1277, 1304, 1331, 1358, 1386, 1414, 1442, 1470, 1498, 1527, 1556, 1585, 1614, 1642 };
349 if (layerNumber==1) strawLayerNumber+= 19;
350 else if (layerNumber==2) strawLayerNumber+= 43;
351 straw = ( numberOfStraws[strawLayerNumber+1] - strawNumber -1 );
353 int board = layerNumber;
354 if (board<6) { board *= 2;
if (strawLayerNumber>7) board++; }
356 straw = board * 192 + strawNumber * 8 + strawLayerNumber % 8 ;
360 index[1] = layerNumber;
362 index[3] = strawLayerNumber;
363 index[4] = strawNumber;