40 const EventContext& ctx = Gaudi::Hive::currentContext();
43 if (!tracks.isValid()) {
return StatusCode::SUCCESS; }
47 if (PixelMonitoringTrack.record(std::make_unique<xAOD::TrackParticleContainer>(),
48 std::make_unique<xAOD::TrackParticleAuxContainer>()).isFailure()) {
49 return StatusCode::SUCCESS;
53 if (!pixClusters.isValid()) {
return StatusCode::SUCCESS; }
56 const int nbin_charge = 60;
57 const int nbin_tot = 120;
58 const int nbin_eta = 30;
59 const int nbin_dedx = 300;
60 const int nbin_size = 10;
61 const int nbin_reso = 80;
62 const int nbin_occ = 80;
64 std::vector<std::vector<int>> clusCharge(11,std::vector<int>(nbin_charge,0));
65 std::vector<std::vector<int>> clusToT(11,std::vector<int>(nbin_tot,0));
66 std::vector<std::vector<int>> clusEta(11,std::vector<int>(nbin_eta,0));
67 std::vector<std::vector<int>> clusHitEta(11,std::vector<int>(nbin_eta,0));
68 std::vector<std::vector<int>> clusdEdx(11,std::vector<int>(nbin_dedx,0));
69 std::vector<std::vector<int>> clusSizeX(11,std::vector<int>(nbin_size,0));
70 std::vector<std::vector<int>> clusSizeZ(11,std::vector<int>(nbin_size,0));
71 std::vector<std::vector<int>> clusResidualX(11,std::vector<int>(nbin_reso,0));
72 std::vector<std::vector<int>> clusResidualY(11,std::vector<int>(nbin_reso,0));
73 std::vector<std::vector<int>> clusHole(11,std::vector<int>(nbin_eta,0));
74 std::vector<std::vector<int>> clusOcc(11,std::vector<int>(nbin_occ,0));
76 std::vector<int> trkEta(nbin_eta,0);
77 std::vector<int> trkHole(nbin_eta,0);
78 std::vector<int> trkdEdx(nbin_dedx,0);
83 std::vector<float> tmpCov(15,0.);
91 if (trk->pt()<1000.0 && nPixHits<4) {
continue; }
92 if (trk->pt()<1000.0 &&
nSCTHits<1) {
continue; }
94 std::vector<uint64_t> holeIndex;
95 std::vector<int> clusterLayer;
96 std::vector<int> clusterBEC;
97 std::vector<int> clusterModulePhi;
98 std::vector<int> clusterModuleEta;
99 std::vector<float> clusterCharge;
100 std::vector<int> clusterToT;
101 std::vector<int> clusterL1A;
102 std::vector<int> clusterIsSplit;
103 std::vector<int> clusterSize;
104 std::vector<int> clusterSizePhi;
105 std::vector<int> clusterSizeZ;
106 std::vector<bool> isEdge;
107 std::vector<bool> isOverflow;
109 std::vector<float> trackTheta;
110 std::vector<float> trackX;
111 std::vector<float> trackY;
112 std::vector<float> localX;
113 std::vector<float> localY;
114 std::vector<float> globalX;
115 std::vector<float> globalY;
117 std::vector<float> unbiasedResidualX;
118 std::vector<float> unbiasedResidualY;
119 std::vector<int> clusterIsolation10x2;
120 std::vector<int> clusterIsolation20x4;
121 std::vector<int> numTotalClustersPerModule;
122 std::vector<int> numTotalPixelsPerModule;
123 std::vector<float> moduleLorentzShift;
125 std::vector<std::vector<int>> rdoToT;
126 std::vector<std::vector<float>> rdoCharge;
127 std::vector<std::vector<int>> rdoPhi;
128 std::vector<std::vector<int>> rdoEta;
131 for (
const auto & msos_iter : measurementsOnTrack) {
132 if (!msos_iter.isValid()) {
continue; }
159 for (
const auto *clus_itr : *pixClusters) {
160 if (clus_itr->identifier()!=(msosClus)->identifier()) {
continue; }
161 if (chargeAcc(*clus_itr)!=chargeAcc(*msosClus)) {
continue; }
163 clusterLayer.push_back(layerAcc(*clus_itr));
164 clusterBEC.push_back(becAcc(*clus_itr));
165 clusterModulePhi.push_back(phi_moduleAcc(*clus_itr));
166 clusterModuleEta.push_back(eta_moduleAcc(*clus_itr));
167 clusterCharge.push_back(chargeAcc(*clus_itr));
168 clusterToT.push_back(ToTAcc(*clus_itr));
169 clusterL1A.push_back(LVL1AAcc(*clus_itr));
170 clusterIsSplit.push_back(isSplitAcc(*clus_itr));
171 clusterSize.push_back(nRDOAcc(*clus_itr));
172 clusterSizePhi.push_back(sizePhiAcc(*clus_itr));
173 clusterSizeZ.push_back(sizeZAcc(*clus_itr));
177 trackX.push_back(msos->
localX());
178 trackY.push_back(msos->
localY());
179 localX.push_back(clus_itr->localX());
180 localY.push_back(clus_itr->localY());
181 globalX.push_back(clus_itr->globalX());
182 globalY.push_back(clus_itr->globalY());
183 globalZ.push_back(clus_itr->globalZ());
186 moduleLorentzShift.push_back(LorentzShiftAcc(*clus_itr));
190 int numNeighborCluster10x2 = 0;
191 int numNeighborCluster20x4 = 0;
192 int nTotalClustersPerModule = 0;
193 int nTotalPixelsPerModule = 0;
194 for (
const auto *clus_neighbor : *pixClusters) {
195 if (layerAcc(*clus_neighbor)==layerAcc(*clus_itr)
196 && becAcc(*clus_neighbor)==becAcc(*clus_itr)
197 && phi_moduleAcc(*clus_neighbor)==phi_moduleAcc(*clus_itr)
198 && eta_moduleAcc(*clus_neighbor)==eta_moduleAcc(*clus_itr)) {
199 float deltaX = std::abs(clus_neighbor->localX()-clus_itr->localX());
200 float deltaY = std::abs(clus_neighbor->localY()-clus_itr->localY());
201 nTotalClustersPerModule++;
202 nTotalPixelsPerModule += nRDOAcc(*clus_neighbor);
204 if (layerAcc(*clus_itr)==0 && becAcc(*clus_itr)==0) {
205 if (
deltaX<0.500 &&
deltaY<0.500) { numNeighborCluster10x2++; }
206 if (
deltaX<1.000 &&
deltaY<1.000) { numNeighborCluster20x4++; }
209 if (
deltaX<0.500 &&
deltaY<0.800) { numNeighborCluster10x2++; }
210 if (
deltaX<1.000 &&
deltaY<1.600) { numNeighborCluster20x4++; }
215 clusterIsolation10x2.push_back(numNeighborCluster10x2);
216 clusterIsolation20x4.push_back(numNeighborCluster20x4);
217 numTotalClustersPerModule.push_back(nTotalClustersPerModule);
218 numTotalPixelsPerModule.push_back(nTotalPixelsPerModule);
222 bool checkEdge =
false;
223 bool checkOverflow =
false;
226 std::vector<int> tmpToT;
227 std::vector<float> tmpCharge;
228 std::vector<int> tmpPhi;
229 std::vector<int> tmpEta;
232 int nrdo = rdo_phi_pixel_indexAcc.isAvailable(*clus_itr) ? rdo_phi_pixel_indexAcc(*clus_itr).size() : -1;
233 for (
int i=0;
i<nrdo;
i++) {
235 int phi = rdo_phi_pixel_indexAcc(*clus_itr)[
i];
236 if (
phi<5) { checkEdge=
true; }
237 if (
phi>320) { checkEdge=
true; }
239 int eta = rdo_phi_pixel_indexAcc(*clus_itr)[
i];
240 if (layerAcc(*clus_itr)==0 && becAcc(*clus_itr)==0) {
241 if (eta_moduleAcc(*clus_itr)>-7 && eta_moduleAcc(*clus_itr)<6) {
242 if (
eta<5) { checkEdge=
true; }
243 if (
eta>154) { checkEdge=
true; }
246 if (
eta<5) { checkEdge=
true; }
247 if (
eta>74) { checkEdge=
true; }
251 if (
eta<5) { checkEdge=
true; }
252 if (
eta>154) { checkEdge=
true; }
255 int tot = rdo_totAcc(*clus_itr)[
i];
256 if (layerAcc(*clus_itr)==0 && becAcc(*clus_itr)==0) {
257 if (
tot==16) { checkOverflow=
true; }
259 else if (layerAcc(*clus_itr)==1 && becAcc(*clus_itr)==0) {
260 if (
tot==150) { checkOverflow=
true; }
263 if (
tot==255) { checkOverflow=
true; }
266 float charge = rdo_chargeAcc(*clus_itr)[
i];
267 if (trk->pt()>2000.0) {
268 tmpToT.push_back(
tot);
269 tmpCharge.push_back(
charge);
270 tmpPhi.push_back(
phi);
271 tmpEta.push_back(
eta);
274 isEdge.push_back(checkEdge);
275 isOverflow.push_back(checkOverflow);
277 rdoToT.push_back(tmpToT);
278 rdoCharge.push_back(tmpCharge);
279 rdoPhi.push_back(tmpPhi);
280 rdoEta.push_back(tmpEta);
323 d0err(*trk) = trk->definingParametersCovMatrixVec().at(0);
324 z0err(*trk) = trk->definingParametersCovMatrixVec().at(2);
325 HoleIndex(*trk) = std::move(holeIndex);
326 ClusterLayer(*trk) = std::move(clusterLayer);
327 ClusterBEC(*trk) = std::move(clusterBEC);
328 ClusterModulePhi(*trk) = std::move(clusterModulePhi);
329 ClusterModuleEta(*trk) = std::move(clusterModuleEta);
330 ClusterCharge(*trk) = std::move(clusterCharge);
331 ClusterToT(*trk) = std::move(clusterToT);
332 ClusterL1A(*trk) = std::move(clusterL1A);
333 ClusterIsSplit(*trk) = std::move(clusterIsSplit);
334 ClusterSize(*trk) = std::move(clusterSize);
335 ClusterSizePhi(*trk) = std::move(clusterSizePhi);
336 ClusterSizeZ(*trk) = std::move(clusterSizeZ);
337 ClusterIsEdge(*trk) = std::move(isEdge);
338 ClusterIsOverflow(*trk) = std::move(isOverflow);
339 TrackLocalPhi(*trk) = std::move(
trackPhi);
340 TrackLocalTheta(*trk) = std::move(trackTheta);
341 TrackLocalX(*trk) = std::move(trackX);
342 TrackLocalY(*trk) = std::move(trackY);
343 ClusterLocalX(*trk) = std::move(localX);
344 ClusterLocalY(*trk) = std::move(localY);
345 ClusterGlobalX(*trk) = std::move(globalX);
346 ClusterGlobalY(*trk) = std::move(globalY);
347 ClusterGlobalZ(*trk) = std::move(
globalZ);
348 UnbiasedResidualX(*trk) = std::move(unbiasedResidualX);
349 UnbiasedResidualY(*trk) = std::move(unbiasedResidualY);
350 ClusterIsolation10x2(*trk) = std::move(clusterIsolation10x2);
351 ClusterIsolation20x4(*trk) = std::move(clusterIsolation20x4);
352 NumTotalClustersPerModule(*trk) = std::move(numTotalClustersPerModule);
353 NumTotalPixelsPerModule(*trk) = std::move(numTotalPixelsPerModule);
354 ModuleLorentzShift(*trk) = std::move(moduleLorentzShift);
355 RdoToT(*trk) = std::move(rdoToT);
356 RdoCharge(*trk) = std::move(rdoCharge);
357 RdoPhi(*trk) = std::move(rdoPhi);
358 RdoEta(*trk) = std::move(rdoEta);
371 bool passLooseCut =
static_cast<bool>(
m_selector->accept(trk));
372 if (!passLooseCut) {
continue; }
377 int checkIBL(0),check3D(0),checkBLY(0),checkLY1(0),checkLY2(0),checkEA1(0),checkEA2(0),checkEA3(0),checkEC1(0),checkEC2(0),checkEC3(0);
378 for (
int i=0;
i<(
int)clusterLayer.size();
i++) {
379 if (clusterBEC.at(
i)== 0 && clusterLayer.at(
i)==0) {
380 if (clusterModuleEta.at(
i)>-7 && clusterModuleEta.at(
i)<6) { checkIBL++; }
383 else if (clusterBEC.at(
i)== 0 && clusterLayer.at(
i)==1) { checkBLY++; }
384 else if (clusterBEC.at(
i)== 0 && clusterLayer.at(
i)==2) { checkLY1++; }
385 else if (clusterBEC.at(
i)== 0 && clusterLayer.at(
i)==3) { checkLY2++; }
386 else if (clusterBEC.at(
i)== 2 && clusterLayer.at(
i)==0) { checkEA1++; }
387 else if (clusterBEC.at(
i)== 2 && clusterLayer.at(
i)==1) { checkEA2++; }
388 else if (clusterBEC.at(
i)== 2 && clusterLayer.at(
i)==2) { checkEA3++; }
389 else if (clusterBEC.at(
i)==-2 && clusterLayer.at(
i)==0) { checkEC1++; }
390 else if (clusterBEC.at(
i)==-2 && clusterLayer.at(
i)==1) { checkEC2++; }
391 else if (clusterBEC.at(
i)==-2 && clusterLayer.at(
i)==2) { checkEC3++; }
394 if (trk->pt()>2000.0 && nPixelDeadSensor==0) {
395 int ietabin = trunc((trk->eta()+3.0)/0.2);
397 std::for_each((trkEta.begin()+ietabin),(trkEta.begin()+ietabin+1),[](
int &
n){ n++; });
398 if (
numberOfPixelHoles>0) { std::for_each((trkHole.begin()+ietabin),(trkHole.begin()+ietabin+1),[](
int &
n){ n++; }); }
400 if (checkBLY>0 && checkLY1>0 && checkLY2>0) { std::for_each((clusEta[0].
begin()+ietabin),(clusEta[0].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkIBL>0) { std::for_each((clusHitEta[0].
begin()+ietabin),(clusHitEta[0].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
401 if (checkBLY>0 && checkEC2>0 && checkEC3>0) { std::for_each((clusEta[1].
begin()+ietabin),(clusEta[1].
begin()+ietabin+1),[](
int &
n){
n++; });
if (check3D>0) { std::for_each((clusHitEta[1].
begin()+ietabin),(clusHitEta[1].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
402 if (checkIBL>0 && checkLY1>0 && checkLY2>0) { std::for_each((clusEta[2].
begin()+ietabin),(clusEta[2].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkBLY>0) { std::for_each((clusHitEta[2].
begin()+ietabin),(clusHitEta[2].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
403 if (checkIBL>0 && checkBLY>0 && checkLY2>0) { std::for_each((clusEta[3].
begin()+ietabin),(clusEta[3].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkLY1>0) { std::for_each((clusHitEta[3].
begin()+ietabin),(clusHitEta[3].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
404 if (checkIBL>0 && checkBLY>0 && checkLY1>0) { std::for_each((clusEta[4].
begin()+ietabin),(clusEta[4].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkLY2>0) { std::for_each((clusHitEta[4].
begin()+ietabin),(clusHitEta[4].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
405 if (checkIBL>0 && checkEA2>0 && checkEA3>0) { std::for_each((clusEta[5].
begin()+ietabin),(clusEta[5].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkEA1>0) { std::for_each((clusHitEta[5].
begin()+ietabin),(clusHitEta[5].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
406 if (checkIBL>0 && checkEA1>0 && checkEA3>0) { std::for_each((clusEta[6].
begin()+ietabin),(clusEta[6].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkEA2>0) { std::for_each((clusHitEta[6].
begin()+ietabin),(clusHitEta[6].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
407 if (checkIBL>0 && checkEA1>0 && checkEA2>0) { std::for_each((clusEta[7].
begin()+ietabin),(clusEta[7].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkEA3>0) { std::for_each((clusHitEta[7].
begin()+ietabin),(clusHitEta[7].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
408 if (checkIBL>0 && checkEC2>0 && checkEC3>0) { std::for_each((clusEta[8].
begin()+ietabin),(clusEta[8].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkEC1>0) { std::for_each((clusHitEta[8].
begin()+ietabin),(clusHitEta[8].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
409 if (checkIBL>0 && checkEC1>0 && checkEC3>0) { std::for_each((clusEta[9].
begin()+ietabin),(clusEta[9].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkEC2>0) { std::for_each((clusHitEta[9].
begin()+ietabin),(clusHitEta[9].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
410 if (checkIBL>0 && checkEC1>0 && checkEC2>0) { std::for_each((clusEta[10].
begin()+ietabin),(clusEta[10].
begin()+ietabin+1),[](
int &
n){
n++; });
if (checkEC3>0) { std::for_each((clusHitEta[10].
begin()+ietabin),(clusHitEta[10].
begin()+ietabin+1),[](
int &
n){
n++; }); }}
412 for (
int i=0;
i<(
int)holeIndex.size();
i++) {
413 int becH, layerH, etaH, phiH;
415 if (becH== 0 && layerH==0) {
416 if (etaH>-7 && etaH<6) { std::for_each((clusHole[0].
begin()+ietabin),(clusHole[0].
begin()+ietabin+1),[](
int &
n){
n++; }); }
417 else { std::for_each((clusHole[1].
begin()+ietabin),(clusHole[1].
begin()+ietabin+1),[](
int &
n){
n++; }); }
419 if (becH== 0 && layerH==1) { std::for_each((clusHole[2].
begin()+ietabin),(clusHole[2].
begin()+ietabin+1),[](
int &
n){
n++; }); }
420 if (becH== 0 && layerH==2) { std::for_each((clusHole[3].
begin()+ietabin),(clusHole[3].
begin()+ietabin+1),[](
int &
n){
n++; }); }
421 if (becH== 0 && layerH==3) { std::for_each((clusHole[4].
begin()+ietabin),(clusHole[4].
begin()+ietabin+1),[](
int &
n){
n++; }); }
422 if (becH== 2 && layerH==0) { std::for_each((clusHole[5].
begin()+ietabin),(clusHole[5].
begin()+ietabin+1),[](
int &
n){
n++; }); }
423 if (becH== 2 && layerH==1) { std::for_each((clusHole[6].
begin()+ietabin),(clusHole[6].
begin()+ietabin+1),[](
int &
n){
n++; }); }
424 if (becH== 2 && layerH==2) { std::for_each((clusHole[7].
begin()+ietabin),(clusHole[7].
begin()+ietabin+1),[](
int &
n){
n++; }); }
425 if (becH==-2 && layerH==0) { std::for_each((clusHole[8].
begin()+ietabin),(clusHole[8].
begin()+ietabin+1),[](
int &
n){
n++; }); }
426 if (becH==-2 && layerH==1) { std::for_each((clusHole[9].
begin()+ietabin),(clusHole[9].
begin()+ietabin+1),[](
int &
n){
n++; }); }
427 if (becH==-2 && layerH==2) { std::for_each((clusHole[10].
begin()+ietabin),(clusHole[10].
begin()+ietabin+1),[](
int &
n){
n++; }); }
433 for (
int i=0;
i<(
int)clusterLayer.size();
i++) { clusterEdge+=isEdge.at(
i); }
436 int clusterOverflow = 0;
437 for (
int i=0;
i<(
int)clusterLayer.size();
i++) { clusterOverflow+=isOverflow.at(
i); }
441 for (
int i=0;
i<(
int)clusterLayer.size();
i++) {
isSplit+=clusterIsSplit.at(
i); }
445 for (
int i=0;
i<(
int)clusterLayer.size();
i++) { iso20x4+=clusterIsolation20x4.at(
i); }
448 bool passCut =
false;
450 if (checkIBL>0 && checkBLY>0 && checkLY1>0 && checkLY2>0) {
453 else if (checkIBL>0 && checkEA1>0 && checkEA2>0 && checkEA3>0) {
456 else if (checkIBL>0 && checkEC1>0 && checkEC2>0 && checkEC3>0) {
459 else if (check3D>0 && checkEC2>0 && checkEC3>0) {
463 if (!passCut) {
continue; }
466 bool isAlphaCut =
false;
467 for (
int i=0;
i<(
int)clusterLayer.size();
i++) {
469 if (
std::cos(alpha)<0.16) { isAlphaCut=
true;
break; }
471 if (isAlphaCut) {
continue; }
473 if (trk->pt()>maxPt) {
479 float energyPair = 3.62
e-6;
480 float siDensity = 2.329;
481 float thicknessIBL = 0.0200;
482 float thickness3D = 0.0230;
483 float thicknessPIX = 0.0250;
486 for (
int i=0;
i<(
int)clusterLayer.size();
i++) {
489 float thickness = thicknessPIX;
490 if (clusterBEC.at(
i)==0 && clusterLayer.at(
i)==0) {
491 thickness = (clusterModuleEta[
i]<6 && clusterModuleEta[
i]>-7) ? thicknessIBL : thickness3D;
493 float recodEdx = clusterCharge[
i]*energyPair/thickness/siDensity*
std::cos(alpha);
494 sumE += clusterCharge[
i]*energyPair;
495 sumX += thickness*siDensity/
std::cos(alpha);
497 int ibc = (clusterCharge[
i]>0.0 && clusterCharge[
i]<120000.0) ? trunc(clusterCharge[
i]/2000.0) : nbin_charge-1;
498 int ibt = (clusterToT[
i]>0 && clusterToT[
i]<120) ? trunc(clusterToT[
i]) : nbin_tot-1;
499 int ibe = (recodEdx>0.0 && recodEdx<3.0) ? trunc(recodEdx*100) : nbin_dedx-1;
500 int ibx = (clusterSizePhi[
i]>-0.5 && clusterSizePhi[
i]<9.5) ? trunc(clusterSizePhi[
i]) : nbin_size-1;
501 int ibz = (clusterSizeZ[
i]>-0.5 && clusterSizeZ[
i]<9.5) ? trunc(clusterSizeZ[
i]) : nbin_size-1;
502 int irx = (unbiasedResidualX[
i]>-0.4 && unbiasedResidualX[
i]<0.4) ? trunc((unbiasedResidualX[
i]+0.4)/0.01) : nbin_reso-1;
503 int iry = (unbiasedResidualY[
i]>-0.4 && unbiasedResidualY[
i]<0.4) ? trunc((unbiasedResidualY[
i]+0.4)/0.01) : nbin_reso-1;
504 int ibo = (numTotalPixelsPerModule[
i]>-0.1 && numTotalPixelsPerModule[
i]<160) ? trunc(numTotalPixelsPerModule[
i]/2.0) : nbin_occ-1;
507 if (clusterBEC.at(
i)==0 && clusterLayer.at(
i)==0) {
508 if (clusterModuleEta[
i]<6 && clusterModuleEta[
i]>-7) {
idx=0; }
511 else if (clusterBEC.at(
i)==0 && clusterLayer.at(
i)==1) {
idx=2; }
512 else if (clusterBEC.at(
i)==0 && clusterLayer.at(
i)==2) {
idx=3; }
513 else if (clusterBEC.at(
i)==0 && clusterLayer.at(
i)==3) {
idx=4; }
514 else if (clusterBEC.at(
i)==2 && clusterLayer.at(
i)==0) {
idx=5; }
515 else if (clusterBEC.at(
i)==2 && clusterLayer.at(
i)==1) {
idx=6; }
516 else if (clusterBEC.at(
i)==2 && clusterLayer.at(
i)==2) {
idx=7; }
517 else if (clusterBEC.at(
i)==-2 && clusterLayer.at(
i)==0) {
idx=8; }
518 else if (clusterBEC.at(
i)==-2 && clusterLayer.at(
i)==1) {
idx=9; }
519 else if (clusterBEC.at(
i)==-2 && clusterLayer.at(
i)==2) {
idx=10; }
521 std::for_each((clusCharge[
idx].
begin()+ibc),(clusCharge[
idx].
begin()+ibc+1),[](
int &
n){
n++; });
522 std::for_each((clusToT[
idx].
begin()+ibt),(clusToT[
idx].
begin()+ibt+1),[](
int &
n){
n++; });
523 std::for_each((clusdEdx[
idx].
begin()+ibe),(clusdEdx[
idx].
begin()+ibe+1),[](
int &
n){
n++; });
524 std::for_each((clusSizeX[
idx].
begin()+ibx),(clusSizeX[
idx].
begin()+ibx+1),[](
int &
n){
n++; });
525 std::for_each((clusSizeZ[
idx].
begin()+ibz),(clusSizeZ[
idx].
begin()+ibz+1),[](
int &
n){
n++; });
526 std::for_each((clusResidualX[
idx].
begin()+irx),(clusResidualX[
idx].
begin()+irx+1),[](
int &
n){
n++; });
527 std::for_each((clusResidualY[
idx].
begin()+iry),(clusResidualY[
idx].
begin()+iry+1),[](
int &
n){
n++; });
528 std::for_each((clusOcc[
idx].
begin()+ibo),(clusOcc[
idx].
begin()+ibo+1),[](
int &
n){
n++; });
532 int iby = (sumE/sumX>0.0 && sumE/sumX<3.0) ? trunc(sumE/sumX*100) : 299;
533 std::for_each((trkdEdx.begin()+iby),(trkdEdx.begin()+iby+1),[](
int &
n){ n++; });
540 tp->makePrivateStore(*trk_maxpt);
541 tp->setDefiningParametersCovMatrixVec(tmpCov);
668 TrackEtaIBL(*
tp) = std::move(clusEta[0]);
669 TrackEta3D(*
tp) = std::move(clusEta[1]);
670 TrackEtaBL(*
tp) = std::move(clusEta[2]);
671 TrackEtaL1(*
tp) = std::move(clusEta[3]);
672 TrackEtaL2(*
tp) = std::move(clusEta[4]);
673 TrackEtaEA1(*
tp) = std::move(clusEta[5]);
674 TrackEtaEA2(*
tp) = std::move(clusEta[6]);
675 TrackEtaEA3(*
tp) = std::move(clusEta[7]);
676 TrackEtaEC1(*
tp) = std::move(clusEta[8]);
677 TrackEtaEC2(*
tp) = std::move(clusEta[9]);
678 TrackEtaEC3(*
tp) = std::move(clusEta[10]);
679 TrackHitEtaIBL(*
tp) = std::move(clusHitEta[0]);
680 TrackHitEta3D(*
tp) = std::move(clusHitEta[1]);
681 TrackHitEtaBL(*
tp) = std::move(clusHitEta[2]);
682 TrackHitEtaL1(*
tp) = std::move(clusHitEta[3]);
683 TrackHitEtaL2(*
tp) = std::move(clusHitEta[4]);
684 TrackHitEtaEA1(*
tp) = std::move(clusHitEta[5]);
685 TrackHitEtaEA2(*
tp) = std::move(clusHitEta[6]);
686 TrackHitEtaEA3(*
tp) = std::move(clusHitEta[7]);
687 TrackHitEtaEC1(*
tp) = std::move(clusHitEta[8]);
688 TrackHitEtaEC2(*
tp) = std::move(clusHitEta[9]);
689 TrackHitEtaEC3(*
tp) = std::move(clusHitEta[10]);
690 ClusterChargeIBL(*
tp) = std::move(clusCharge[0]);
691 ClusterCharge3D(*
tp) = std::move(clusCharge[1]);
692 ClusterChargeBL(*
tp) = std::move(clusCharge[2]);
693 ClusterChargeL1(*
tp) = std::move(clusCharge[3]);
694 ClusterChargeL2(*
tp) = std::move(clusCharge[4]);
695 ClusterChargeEA1(*
tp) = std::move(clusCharge[5]);
696 ClusterChargeEA2(*
tp) = std::move(clusCharge[6]);
697 ClusterChargeEA3(*
tp) = std::move(clusCharge[7]);
698 ClusterChargeEC1(*
tp) = std::move(clusCharge[8]);
699 ClusterChargeEC2(*
tp) = std::move(clusCharge[9]);
700 ClusterChargeEC3(*
tp) = std::move(clusCharge[10]);
701 ClusterToTIBL(*
tp) = std::move(clusToT[0]);
702 ClusterToT3D(*
tp) = std::move(clusToT[1]);
703 ClusterToTBL(*
tp) = std::move(clusToT[2]);
704 ClusterToTL1(*
tp) = std::move(clusToT[3]);
705 ClusterToTL2(*
tp) = std::move(clusToT[4]);
706 ClusterToTEA1(*
tp) = std::move(clusToT[5]);
707 ClusterToTEA2(*
tp) = std::move(clusToT[6]);
708 ClusterToTEA3(*
tp) = std::move(clusToT[7]);
709 ClusterToTEC1(*
tp) = std::move(clusToT[8]);
710 ClusterToTEC2(*
tp) = std::move(clusToT[9]);
711 ClusterToTEC3(*
tp) = std::move(clusToT[10]);
712 ClusterdEdxIBL(*
tp) = std::move(clusdEdx[0]);
713 ClusterdEdx3D(*
tp) = std::move(clusdEdx[1]);
714 ClusterdEdxBL(*
tp) = std::move(clusdEdx[2]);
715 ClusterdEdxL1(*
tp) = std::move(clusdEdx[3]);
716 ClusterdEdxL2(*
tp) = std::move(clusdEdx[4]);
717 ClusterdEdxEA1(*
tp) = std::move(clusdEdx[5]);
718 ClusterdEdxEA2(*
tp) = std::move(clusdEdx[6]);
719 ClusterdEdxEA3(*
tp) = std::move(clusdEdx[7]);
720 ClusterdEdxEC1(*
tp) = std::move(clusdEdx[8]);
721 ClusterdEdxEC2(*
tp) = std::move(clusdEdx[9]);
722 ClusterdEdxEC3(*
tp) = std::move(clusdEdx[10]);
723 ClusterSizeXIBL(*
tp) = std::move(clusSizeX[0]);
724 ClusterSizeX3D(*
tp) = std::move(clusSizeX[1]);
725 ClusterSizeXBL(*
tp) = std::move(clusSizeX[2]);
726 ClusterSizeXL1(*
tp) = std::move(clusSizeX[3]);
727 ClusterSizeXL2(*
tp) = std::move(clusSizeX[4]);
728 ClusterSizeXEA1(*
tp) = std::move(clusSizeX[5]);
729 ClusterSizeXEA2(*
tp) = std::move(clusSizeX[6]);
730 ClusterSizeXEA3(*
tp) = std::move(clusSizeX[7]);
731 ClusterSizeXEC1(*
tp) = std::move(clusSizeX[8]);
732 ClusterSizeXEC2(*
tp) = std::move(clusSizeX[9]);
733 ClusterSizeXEC3(*
tp) = std::move(clusSizeX[10]);
734 ClusterSizeZIBL(*
tp) = std::move(clusSizeZ[0]);
735 ClusterSizeZ3D(*
tp) = std::move(clusSizeZ[1]);
736 ClusterSizeZBL(*
tp) = std::move(clusSizeZ[2]);
737 ClusterSizeZL1(*
tp) = std::move(clusSizeZ[3]);
738 ClusterSizeZL2(*
tp) = std::move(clusSizeZ[4]);
739 ClusterSizeZEA1(*
tp) = std::move(clusSizeZ[5]);
740 ClusterSizeZEA2(*
tp) = std::move(clusSizeZ[6]);
741 ClusterSizeZEA3(*
tp) = std::move(clusSizeZ[7]);
742 ClusterSizeZEC1(*
tp) = std::move(clusSizeZ[8]);
743 ClusterSizeZEC2(*
tp) = std::move(clusSizeZ[9]);
744 ClusterSizeZEC3(*
tp) = std::move(clusSizeZ[10]);
745 ClusterResidualXIBL(*
tp) = std::move(clusResidualX[0]);
746 ClusterResidualX3D(*
tp) = std::move(clusResidualX[1]);
747 ClusterResidualXBL(*
tp) = std::move(clusResidualX[2]);
748 ClusterResidualXL1(*
tp) = std::move(clusResidualX[3]);
749 ClusterResidualXL2(*
tp) = std::move(clusResidualX[4]);
750 ClusterResidualXEA1(*
tp) = std::move(clusResidualX[5]);
751 ClusterResidualXEA2(*
tp) = std::move(clusResidualX[6]);
752 ClusterResidualXEA3(*
tp) = std::move(clusResidualX[7]);
753 ClusterResidualXEC1(*
tp) = std::move(clusResidualX[8]);
754 ClusterResidualXEC2(*
tp) = std::move(clusResidualX[9]);
755 ClusterResidualXEC3(*
tp) = std::move(clusResidualX[10]);
756 ClusterResidualYIBL(*
tp) = std::move(clusResidualY[0]);
757 ClusterResidualY3D(*
tp) = std::move(clusResidualY[1]);
758 ClusterResidualYBL(*
tp) = std::move(clusResidualY[2]);
759 ClusterResidualYL1(*
tp) = std::move(clusResidualY[3]);
760 ClusterResidualYL2(*
tp) = std::move(clusResidualY[4]);
761 ClusterResidualYEA1(*
tp) = std::move(clusResidualY[5]);
762 ClusterResidualYEA2(*
tp) = std::move(clusResidualY[6]);
763 ClusterResidualYEA3(*
tp) = std::move(clusResidualY[7]);
764 ClusterResidualYEC1(*
tp) = std::move(clusResidualY[8]);
765 ClusterResidualYEC2(*
tp) = std::move(clusResidualY[9]);
766 ClusterResidualYEC3(*
tp) = std::move(clusResidualY[10]);
767 ClusterHoleIBL(*
tp) = std::move(clusHole[0]);
768 ClusterHole3D(*
tp) = std::move(clusHole[1]);
769 ClusterHoleBL(*
tp) = std::move(clusHole[2]);
770 ClusterHoleL1(*
tp) = std::move(clusHole[3]);
771 ClusterHoleL2(*
tp) = std::move(clusHole[4]);
772 ClusterHoleEA1(*
tp) = std::move(clusHole[5]);
773 ClusterHoleEA2(*
tp) = std::move(clusHole[6]);
774 ClusterHoleEA3(*
tp) = std::move(clusHole[7]);
775 ClusterHoleEC1(*
tp) = std::move(clusHole[8]);
776 ClusterHoleEC2(*
tp) = std::move(clusHole[9]);
777 ClusterHoleEC3(*
tp) = std::move(clusHole[10]);
778 ClusterOccIBL(*
tp) = std::move(clusOcc[0]);
779 ClusterOcc3D(*
tp) = std::move(clusOcc[1]);
780 ClusterOccBL(*
tp) = std::move(clusOcc[2]);
781 ClusterOccL1(*
tp) = std::move(clusOcc[3]);
782 ClusterOccL2(*
tp) = std::move(clusOcc[4]);
783 ClusterOccEA1(*
tp) = std::move(clusOcc[5]);
784 ClusterOccEA2(*
tp) = std::move(clusOcc[6]);
785 ClusterOccEA3(*
tp) = std::move(clusOcc[7]);
786 ClusterOccEC1(*
tp) = std::move(clusOcc[8]);
787 ClusterOccEC2(*
tp) = std::move(clusOcc[9]);
788 ClusterOccEC3(*
tp) = std::move(clusOcc[10]);
789 TrackALL(*
tp) = std::move(trkEta);
790 TrackHOLE(*
tp) = std::move(trkHole);
791 TrackdEdx(*
tp) = std::move(trkdEdx);
793 PixelMonitoringTrack->push_back(
tp);
796 return StatusCode::SUCCESS;