77 Float_t dx[nModules] = {
78 +0.13, +0.15, -0.21, -0.28, +0.09, -0.29, -0.13, -0.28, -0.14, -0.08,
79 -0.07, -0.13, -0.30, -0.26, +0.36, +0.24, +0.33, +0.46, -0.06, +0.09,
80 -0.07, +0.36, -0.23, +0.18, +0.05, -0.38, +0.16, +0.26, +0.28, -0.21,
81 -0.06, -0.29, -0.03, -0.45, +0.04, -0.33, +0.16, +0.15, +0.38, +0.19,
82 +0.54, +0.68, -0.16, -0.04, +0.10, +0.23, -0.13, +0.00, -0.10, +0.56,
83 +0.50, -0.18, +0.18, +0.44, +0.50, +0.39, +0.29, +0.37, +0.01
86 Float_t dy[nModules] = {
87 -0.06, -0.08, -0.32, -0.25, -0.13, -0.31, -0.18, -0.19, -0.34, -0.45,
88 -0.21, -0.34, -0.22, -0.21, -0.09, -0.22, -0.29, -0.28, -0.02, -0.15,
89 -0.34, -0.17, -0.08, -0.01, -0.05, -0.09, +0.01, -0.06, +0.12, +0.00,
90 -0.08, -0.20, -0.05, -0.07, +0.13, +0.00, -0.03, +0.02, +0.09, -0.07,
91 +0.13, +0.21, -0.12, -0.16, -0.04, -0.02, +0.05, -0.04, -0.10, +0.19,
92 +0.10, +0.04, +0.16, -0.01, -0.25, -0.29, -0.16, -0.02, -0.20
95 if (!IsActive())
return;
97 cout <<
"Event ID: " << fEventId++ << endl;
100 if (fVertex->
GetZ() < -0.5 || fVertex->
GetZ() > 0.5)
return;
101 if (fVertex->
GetX() < -1.0 || fVertex->
GetX() > 1.5)
return;
102 if (fVertex->
GetY() < -1.0 || fVertex->
GetY() > 1.2)
return;
105 for (Int_t iTr = 0; iTr < fStsTracks->GetEntriesFast(); ++iTr) {
114 mom = 1.0 / parF.GetQp();
115 pdg = (mom > 0) ? 2212 : -211;
131 Double_t length = 0.0;
133 if (
PropagateToZ(&parF, fVertex->
GetZ(), pdg, fKalmanType, &length) == kFALSE)
continue;
136 if (TMath::Sqrt(TMath::Sq(parF.GetX() - fVertex->
GetX()) + TMath::Sq(parF.GetY() - fVertex->
GetY())) > 1.0)
continue;
140 Double_t xPrev = cbmhit->GetX();
141 Double_t yPrev = cbmhit->GetY();
142 Double_t zPrev = cbmhit->GetZ();
143 for (Int_t iHit = 1; iHit < track->
GetNStsHits(); ++iHit) {
145 length += Sqrt(Sq(cbmhit->GetX() - xPrev) + Sq(cbmhit->GetY() - yPrev) + Sq(cbmhit->GetZ() - zPrev));
146 xPrev = cbmhit->GetX();
147 yPrev = cbmhit->GetY();
148 zPrev = cbmhit->GetZ();
154 Float_t minResX = 100.0;
155 Float_t minResY = 100.0;
157 for (Int_t iH = 0; iH < fTof700Hits->GetEntriesFast(); ++iH) {
159 Int_t mod = ((hit->GetDetectorID() & 0x0000FF00) >> 8) - 1;
162 Double_t hitZ = hit->GetZ();
165 Float_t resX = parL.GetX() - hit->GetX() - GetDxMom(&parL) - dx[mod];
166 Float_t resY = parL.GetY() - hit->GetY() - GetDyMom(&parL) - dy[mod];
167 if (Abs(resX) > 3.0 * GetSigxMom(&parL) || Abs(resY) > 3.0 * GetSigxMom(&parL))
continue;
168 if (Abs(resX) < minResX && Abs(resY) < minResY) {
174 if (minIdx == -1)
continue;
178 if (
PropagateToZ(&minParL, minHit->GetZ(), pdg, fKalmanType, &length) == kFALSE)
continue;
179 Int_t mod = ((minHit->GetDetectorID() & 0x0000FF00) >> 8) - 1;
180 Int_t strip = (minHit->GetDetectorID() & 0x000000FF) - 1;
188 mom = 1.0 / parF.GetQp();
189 Float_t time = minHit->GetTimeStamp() + timeShifts[mod][strip];
190 Float_t beta = length / time / (TMath::C() * 1e-7);
191 Float_t m2 = mom * mom * (1.0 / beta / beta - 1.0);
193 fHistoManager->
H2(
"TOF700_Banan_total")->Fill(mom, beta);
194 fHistoManager->
H2(
"TOF700_M2_total")->Fill(mom, m2);
195 fHistoManager->
H2(
"TOF700_dx_mom_total")->Fill(mom, minResX);
196 fHistoManager->
H2(
"TOF700_dy_mom_total")->Fill(mom, minResY);
202 if (mom > 0.0 && mom < 5.0 && m2 > 0.5 && m2 < 1.5) {
205 fHistoManager->
H1(Form(
"TOF700_proton_ResidX_%d", mod))->Fill(minResX);
206 fHistoManager->
H1(Form(
"TOF700_proton_ResidY_%d", mod))->Fill(minResY);
207 fHistoManager->
H2(
"TOF700_proton_dx_mom_total")->Fill(mom, minResX);
208 fHistoManager->
H2(
"TOF700_proton_dy_mom_total")->Fill(mom, minResY);
215 fHistoManager->
H2(Form(
"TOF700_proton_dx_tx_%d", mod))->Fill(minParL.GetTx(), minResX);
218 if (mom > 0.0 && mom < 6.0 && m2 > 3.0 && m2 < 5.5) {
221 fHistoManager->
H1(Form(
"TOF700_deutron_ResidX_%d", mod))->Fill(minResX);
222 fHistoManager->
H1(Form(
"TOF700_deutron_ResidY_%d", mod))->Fill(minResY);
224 fHistoManager->
H2(
"TOF700_deutron_dx_mom_total")->Fill(mom, minResX);
225 fHistoManager->
H2(
"TOF700_deutron_dy_mom_total")->Fill(mom, minResY);
231 fHistoManager->
H2(Form(
"TOF700_deutron_dx_tx_%d", mod))->Fill(minParL.GetTx(), minResX);
234 if (mom > 0.0 && mom < 3.5 && m2 > -0.2 && m2 < 0.2) {
237 fHistoManager->
H1(Form(
"TOF700_piPlus_ResidX_%d", mod))->Fill(minResX);
238 fHistoManager->
H1(Form(
"TOF700_piPlus_ResidY_%d", mod))->Fill(minResY);
240 fHistoManager->
H2(
"TOF700_piPlus_dx_mom_total")->Fill(mom, minResX);
241 fHistoManager->
H2(
"TOF700_piPlus_dy_mom_total")->Fill(mom, minResY);
247 fHistoManager->
H2(Form(
"TOF700_piPlus_dx_tx_%d", mod))->Fill(minParL.GetTx(), minResX);
250 if (mom > -3.5 && mom < 0.0 && m2 > -0.2 && m2 < 0.2) {
253 fHistoManager->
H1(Form(
"TOF700_piMinus_ResidX_%d", mod))->Fill(minResX);
254 fHistoManager->
H1(Form(
"TOF700_piMinus_ResidY_%d", mod))->Fill(minResY);
256 fHistoManager->
H2(
"TOF700_piMinus_dx_mom_total")->Fill(mom, minResX);
257 fHistoManager->
H2(
"TOF700_piMinus_dy_mom_total")->Fill(mom, minResY);
263 fHistoManager->
H2(Form(
"TOF700_piMinus_dx_tx_%d", mod))->Fill(minParL.GetTx(), minResX);
269 fWorkTime += sw.RealTime();