29 #include "GaudiKernel/StatusCode.h"
45 #define SCT_BARREL_SEL 0
46 #define SCT_POSEC_SEL 2
47 #define SCT_NEGEC_SEL -2
61 enum Pattern{ IXX=0, XIX, XXI };
63 bool timeBinInPattern(
const int tbin,
const Pattern xxx){
69 return(tbin==2||tbin==3||tbin==6||tbin==7);
72 return(tbin==1||tbin==3||tbin==5||tbin==7);
75 cout <<
"A strange timepattern was found;"
76 " this should never happen" << endl;
110 m_SCT_TRT_NO(nullptr),
111 m_SCT_PIX_NO(nullptr),
112 m_PIX_TRT_NO(nullptr),
114 m_TRT_SCTvTRT_PIX_10evt(nullptr),
115 m_TRT_SCTvSCT_PIX_10evt(nullptr),
116 m_TRT_PIXvSCT_PIX_10evt(nullptr),
117 m_PIX_NO_evt(nullptr),
120 m_PIX_NO_ECA(nullptr),
121 m_PIX_NO_ECC(nullptr),
122 m_PIX_NO_nseg(nullptr),
123 m_PIX_NO_ntrk(nullptr),
124 m_SCT_NO_evt(nullptr),
127 m_SCT_NO_ECA(nullptr),
128 m_SCT_NO_ECC(nullptr),
129 m_SCT_NO_nseg(nullptr),
130 m_SCT_NO_ntrk(nullptr),
131 m_TRT_NO_evt(nullptr),
132 m_TRT_NO_BA_phi(nullptr),
133 m_TRT_NO_BC_phi(nullptr),
134 m_TRT_NO_ECA_phi(nullptr),
135 m_TRT_NO_ECC_phi(nullptr),
136 m_TRT_HL_NO_evt(nullptr),
138 m_TRT_HL_NO(nullptr),
139 m_TRT_NO_nseg(nullptr),
140 m_TRT_NO_ntrk(nullptr)
164 TH2F_LW::create(
"m_SCT_TRT_NO",
"TRT noise occupancy vs SCT noise occupancy",
167 TH2F_LW::create(
"m_SCT_PIX_NO",
"Pixel noise occupancy vs SCT noise occupancy",
170 TH2F_LW::create(
"m_PIX_TRT_NO",
"TRT noise occupancy vs Pixel noise occupancy",
180 "TRT,SCT, PIX combined "
181 "occupancy",100,-1,1,100,-1,1)).isSuccess();
184 "TRT,SCT, PIX combined "
185 "occupancy",100,-1,1,100,-1,1)).isSuccess();
188 "TRT,SCT, PIX combined "
189 "occupancy",100,-1,1,100,-1,1)).isSuccess();
210 "vs number of PIX segments",500,0,500,
214 "vs number of combinedtracks",500,0,500,
235 "vs number of SCT segments"
236 ,50,0,50,150,0,
m_sctMax)).isSuccess();
239 "vs number of combined tracks",
240 100,0,100,200,0,
m_sctMax)).isSuccess();
245 "occupancy vs bin of 10 events",
265 "occupancy vs event number",
272 "vs number of TRT segments",500,0,500,
276 "vs number of combined tracks",
277 500,0,500,200,0,
m_trtMax)).isSuccess();
293 if (
status )
return StatusCode::SUCCESS;
294 else return StatusCode::FAILURE;
309 return StatusCode::FAILURE;
387 float nTRT_HL_RDOs=0.;
388 float nTRT_HL_trk=0.;
392 int nSCT_trk_ECA = 0;
393 int nSCT_trk_ECC = 0;
398 int nPIX_trk_ECA = 0;
399 int nPIX_trk_ECC = 0;
401 int TRT_nOnTrack_phi_BA[32] = {0};
402 int TRT_nOnTrack_phi_BC[32] = {0};
403 int TRT_nOnTrack_phi_ECA[32] = {0};
404 int TRT_nOnTrack_phi_ECC[32] = {0};
410 for ( ; itrack!=itrack_end ; ++itrack) {
414 if (
track ==
nullptr){
415 if (
msgLvl(MSG::WARNING) ) {
416 msg(MSG::WARNING) <<
"no pointer to track!!!" <<
endmsg;
422 trackStates=
track->trackStateOnSurfaces();
423 if (trackStates ==
nullptr) {
424 if (
msgLvl(MSG::ERROR) )
msg(MSG::ERROR)
425 <<
"for current track is TrackStateOnSurfaces == Null "
431 it_end=trackStates->
end();
432 for ( ;
it != it_end ; ++
it) {
435 if (trackState ==
nullptr) {
436 if (
msgLvl(MSG::WARNING) )
msg(MSG::WARNING) <<
"TrackStateOnSurface == Null, is the tracking OK?" <<
endmsg;
440 if (trtcircle!=
nullptr) {
443 Identifier rdoId = trtcircle->
identify();
461 if(trtcircle->
highLevel()) nTRT_HL_trk++;
469 if (
msgLvl(MSG::WARNING) )
msg(MSG::WARNING) <<
470 "SiCluster WITHOUT " <<
476 if (RawDataClus==
nullptr) {
477 if (
msgLvl(MSG::WARNING) )
msg(MSG::WARNING)
478 <<
"SiCluster WITHOUT prepRawData!!!!"
482 nSCT_trk += RawDataClus->
rdoList().size();
497 nPIX_trk += RawDataClus->
rdoList().size();
525 int TRT_nRDOs_phi_BA[32] = {0};
526 int TRT_nRDOs_phi_BC[32] = {0};
527 int TRT_nRDOs_phi_ECA[32] = {0};
528 int TRT_nRDOs_phi_ECC[32] = {0};
531 TRT_DriftCircleContainer::const_iterator colIt =
533 TRT_DriftCircleContainer::const_iterator colIt_end =
535 for( ; colIt != colIt_end; ++colIt){
546 for(; p_rdo!=p_rdo_end; ++p_rdo){
593 for( ; colNextsct != colNextsct_end; ++colNextsct){
601 << SCT_Collection->
size() <<
" RDOs"
605 SCT_Collection->
begin();
607 SCT_Collection->
end();
608 for( ; p_rdo!=p_rdo_end; ++p_rdo){
621 if(timeBinInPattern(tbin, XIX)){
653 for(; colNextpix != colNextpix_end; ++colNextpix){
655 PIX_Collection(*colNextpix);
662 << PIX_Collection->
size() <<
" RDOs"
666 PIX_Collection->
begin();
668 PIX_Collection->
end();
669 for(; p_rdo!=p_rdo_end; ++p_rdo){
700 const float dTRTstraw = (nTRT_RDOs-nTRT_trk)/
m_nStraws;
701 const float dSCTstrip = (nSCT_RDOs-nSCT_trk)/
m_nStrips;
702 const float dSCTstrip_B = (nSCT_RDOs_B-nSCT_trk_B)/
m_nStrips_B;
703 const float dSCTstrip_ECA = (nSCT_RDOs_ECA-nSCT_trk_ECA)/
m_nStrips_ECA;
704 const float dSCTstrip_ECC = (nSCT_RDOs_ECC-nSCT_trk_ECC)/
m_nStrips_ECC;
705 const float dPIXpixel = (nPIX_RDOs-nPIX_trk)/
m_nPixels;
706 const float dPIXpixel_B = (nPIX_RDOs_B-nPIX_trk_B)/
m_nPixels_B;
707 const float dPIXpixel_ECA = (nPIX_RDOs_ECA-nPIX_trk_ECA)/
m_nPixels_ECA;
708 const float dPIXpixel_ECC = (nPIX_RDOs_ECC-nPIX_trk_ECC)/
m_nPixels_ECC;
709 const float dTRTHLstraw = (nTRT_HL_RDOs-nTRT_HL_trk)/
m_nStraws;
732 if( nTRT_RDOs > nTRT_trk &&
733 nSCT_RDOs > nSCT_trk &&
734 nPIX_RDOs > nPIX_trk ){
736 struct noise noise_occupancy{};
739 noise_occupancy.
trt_no = dTRTstraw;
740 noise_occupancy.
sct_no = dSCTstrip;
741 noise_occupancy.
pix_no = dPIXpixel;
747 m_NO.push_back(noise_occupancy);
757 if(nTRT_RDOs > nTRT_trk && nSCT_RDOs > nSCT_trk)
762 if(nPIX_RDOs > nPIX_trk && nSCT_RDOs > nSCT_trk)
767 if (nPIX_RDOs > nPIX_trk && nTRT_RDOs > nTRT_trk)
779 if(nTRT_RDOs > nTRT_trk){
783 for (
int i = 0;
i < 32;
i++){
803 if(nSCT_RDOs > nSCT_trk){
818 if(nPIX_RDOs > nPIX_trk){
850 xaxis_PIX_NO_ntrk->
SetTitle(
"Number of tracks");
853 xaxis_PIX_NO_nseg->
SetTitle(
"Number of PIX segments");
856 xaxis_SCT_NO_ntrk->
SetTitle(
"Number of tracks");
859 xaxis_SCT_NO_nseg->
SetTitle(
"Number of SCT segments");
862 xaxis_TRT_NO_ntrk->
SetTitle(
"Number of tracks");
865 xaxis_TRT_NO_nseg->
SetTitle(
"Number of TRT segments");
931 return StatusCode::SUCCESS;
942 const Identifier &rdoId)
const{
950 if(layer_or_wheel<6){
951 trplID += layer_or_wheel*2;
954 if(layer_or_wheel>5){
955 trplID += 6 + layer_or_wheel;
971 const float *sum_y,
const float *sum_xy,
const float *sum_x_sq,
const float *sum_y_sq,
982 num = (
float)*points * *sum_xy - *sum_x * *sum_y;
983 denom_1 = (
float)*points * *sum_x_sq - *sum_x * *sum_x;
984 denom_2 = (
float)*points * *sum_y_sq - *sum_y * *sum_y;
986 r =
num / sqrt((denom_1 * denom_2));
1041 for(
int i=0;
i <
x;
i++){
1047 float sum_trt_sct = 0;
1048 float sum_trt_pix = 0;
1049 float sum_sct_pix = 0;
1055 float sum_trt_sq = 0;
1056 float sum_sct_sq = 0;
1057 float sum_pix_sq = 0;
1064 for(
int j =
n*
i; j <
n*
i+
n; j++){
1068 float trt =
no.at(j).trt_no;
1071 float sct =
no.at(j).sct_no;
1074 float pix =
no.at(j).pix_no;
1083 sum_trt_sct += trt*sct;
1084 sum_trt_pix += trt*
pix;
1085 sum_sct_pix += sct*
pix;
1087 sum_trt_sq += trt*trt;
1088 sum_sct_sq += sct*sct;
1094 &sum_trt_sct, &sum_trt_sq, &sum_sct_sq,
1097 &sum_trt_pix, &sum_trt_sq, &sum_pix_sq,
1100 &sum_sct_pix, &sum_pix_sq, &sum_sct_sq,
1139 if(barrel_ec_sel != 0 && barrel_ec_sel != -2 && barrel_ec_sel != 2)
1141 if (
msgLvl(MSG::WARNING) )
msg(MSG::WARNING) <<
"Wrong selection on SCTCounts !" <<
endmsg;
1145 int barrel_ec = barrel_ec_sel;
1146 int nStripsCntr = 0;
1149 int layer_disk_max = 0;
1150 if(barrel_ec_sel == 0)
1155 else if(barrel_ec_sel == -2 || barrel_ec_sel == 2)
1161 for(
int layerItr = 0 ; layerItr <= layer_disk_max ; layerItr++)
1166 etaItr <= m_sctID->eta_module_max(rdoId) ; etaItr++)
1168 for(
int sideItr = 0 ; sideItr <= 1 ; sideItr++)
1171 for(
int stripItr = 0 ; stripItr <= strip_max_m ; stripItr++)
1173 rdoId =
m_sctID->
strip_id(barrel_ec, layerItr, phiItr, etaItr, sideItr, stripItr, do_checks_flg);
1183 for(
int layerItr = 0 ; layerItr <= layer_disk_max ; layerItr++)
1188 etaItr <= m_sctID->eta_module_max(rdoId) ; etaItr++)
1190 for(
int sideItr = 0 ; sideItr <= 1 ; sideItr++)
1193 for(
int stripItr = 0 ; stripItr <= strip_max_m ; stripItr++)
1195 rdoId =
m_sctID->
strip_id(barrel_ec, layerItr, phiItr, etaItr, sideItr, stripItr, do_checks_flg);
1221 if(barrel_ec_sel != 0 && barrel_ec_sel != -2 && barrel_ec_sel != 2)
1223 if (
msgLvl(MSG::WARNING) )
msg(MSG::WARNING) <<
"Wrong selection on GetPixelCounts !" <<
endmsg;
1227 int barrel_ec = barrel_ec_sel;
1231 int layer_disk_max = 0;
1232 if(barrel_ec_sel == 0)
1237 else if(barrel_ec_sel == -2 || barrel_ec_sel == 2)
1243 for(
int layerItr = 0 ; layerItr <= layer_disk_max ; layerItr++)
1248 for(
int phiItr = 0 ; phiItr <= phi_module_max ; phiItr++)
1250 for(
int etaItr = eta_module_min; etaItr <= eta_module_max; etaItr++)
1254 for(
int pixel_phi = 0 ; pixel_phi <= pixel_phi_max ; pixel_phi++){
1255 for(
int pixel_eta = 0 ; pixel_eta <= pixel_eta_max ; pixel_eta++){