@@ -29,14 +29,13 @@ using namespace o2::trd::constants;
2929void TrackBasedCalib::reset ()
3030{
3131 mAngResHistos .reset ();
32- mGainCalibHistos .reset ();
32+ mGainCalibHistos .clear ();
3333}
3434
3535void TrackBasedCalib::init ()
3636{
3737 bz = o2::base::Propagator::Instance ()->getNominalBz ();
3838 mRecoParam .setBfield (bz);
39- mGainCalibHistos .init ();
4039}
4140
4241void TrackBasedCalib::setInput (const o2::globaltracking::RecoContainer& input)
@@ -58,8 +57,8 @@ void TrackBasedCalib::calculateGainCalibObjs()
5857 int nTracksSuccessTPCTRD = filldEdx (mTracksInTPCTRD , true );
5958 int nTracksSuccessITSTPCTRD = filldEdx (mTracksInITSTPCTRD , false );
6059
61- LOGF (info, " Gain Calibration: Successfully processed %i tracks (%i from ITS-TPC-TRD and %i from TPC-TRD) and collected %d tracklets " ,
62- nTracksSuccessITSTPCTRD + nTracksSuccessTPCTRD, nTracksSuccessITSTPCTRD, nTracksSuccessTPCTRD, mGainCalibHistos .getNEntries ());
60+ LOGP (info, " Gain Calibration: Successfully processed {} tracks ({} from ITS-TPC-TRD and {} from TPC-TRD) and collected {} data points " ,
61+ nTracksSuccessITSTPCTRD + nTracksSuccessTPCTRD, nTracksSuccessITSTPCTRD, nTracksSuccessTPCTRD, mGainCalibHistos .size ());
6362}
6463
6564void TrackBasedCalib::calculateAngResHistos ()
@@ -133,10 +132,10 @@ int TrackBasedCalib::filldEdx(gsl::span<const TrackTRD>& tracks, bool isTPCTRD)
133132
134133 const auto & tracklet = mTrackletsRaw [trkltId];
135134
136- float Q0 = tracklet.getQ0 ();
137- float Q1 = tracklet.getQ1 ();
138- float Q2 = tracklet.getQ2 ();
139- if (Q0 == 0 || Q1 == 0 || Q2 == 0 || Q0 >= 127 || Q1 >= 127 || Q2 >= 62 ) {
135+ auto q0 = tracklet.getQ0 ();
136+ auto q1 = tracklet.getQ1 ();
137+ auto q2 = tracklet.getQ2 ();
138+ if (q0 == 0 || q1 == 0 || q2 == 0 || q0 >= 127 || q1 >= 127 || q2 >= 62 ) {
140139 continue ;
141140 }
142141
@@ -153,14 +152,26 @@ int TrackBasedCalib::filldEdx(gsl::span<const TrackTRD>& tracks, bool isTPCTRD)
153152 // l/l0 = sqrt(dx^2 + dy^2 + dz^2)/dx = sqrt(1 + (dy/dx)^2 + (dz/dx)^2)
154153 // (dz/dx)^2 = tan^2(lambda), (dy/dx)^2 = tan^2(phi) = sin^2(phi)/(1-sin^2(phi))
155154 float trkLength = sqrt (1 + snp * snp / (1 - snp * snp) + tgl * tgl);
155+ if (TMath::Abs (trkLength) < 1 ) {
156+ LOGP (warn, " Invalid track length {} for angles snp {} and tgl {}" , trkLength, snp, tgl);
157+ continue ;
158+ }
156159
157160 float localGainCorr = 1 .;
158161 if (mLocalGain ) {
159- localGainCorr = mLocalGain ->getValue (tracklet.getDetector (), tracklet.getPadCol (), tracklet.getPadRow ());
162+ localGainCorr = mLocalGain ->getValue (trkltDet, tracklet.getPadCol (), tracklet.getPadRow ());
163+ }
164+ if (TMath::Abs (localGainCorr) < 0 .0001f ) {
165+ LOGP (warn, " Invalid localGainCorr {} for det {}, pad col {}, pad row {}" , localGainCorr, trkltDet, tracklet.getPadCol (), tracklet.getPadRow ());
166+ continue ;
160167 }
161- float dEdx = (Q0 + Q1 + Q2) / trkLength / localGainCorr;
162168
163- mGainCalibHistos .addEntry (dEdx, mTrackletsRaw [trkIn.getTrackletIndex (iLayer)].getDetector ());
169+ unsigned int dEdx = (q0 + q1 + q2) / trkLength / localGainCorr;
170+ if (dEdx >= NBINSGAINCALIB) {
171+ continue ;
172+ }
173+ int chamberOffset = trkltDet * NBINSGAINCALIB;
174+ mGainCalibHistos .push_back (chamberOffset + trkltDet + dEdx);
164175 }
165176
166177 // here we can count the number of successfully processed tracks
0 commit comments