24 EvdE::EvdE(
char *HistogramDirectoryName,
double t0,
double t1) :
66 hEvdE[0] =
new TH2D(
"hEvdE_Right",
"dEdx vs E (Right);E + dE (keV);dE (keV)",
69 hEvdE[1] =
new TH2D(
"hEvdE_Left",
"dEdx vs E (Left);E + dE (keV);dE (keV)",
73 hEvdE_log[0] =
new TH1D(
"hEvdE_Right_log",
"logdE +logE (Right)", 100, 10., 30.);
74 hEvdE_log[1] =
new TH1D(
"hEvdE_Left_log",
"logdE +logE (Left)", 100, 10., 30.);
77 "Energy of protons (Left)", 1000, 0., 14000.);
79 "Energy of protons (Right)", 1000, 0., 14000.);
81 hEvdEprotons[0] =
new TH2D(
"hEvdE_Proton_Right",
"dEdx vs E (Right);E + dE (keV);dE (keV)",
84 hEvdEprotons[1] =
new TH2D(
"hEvdE_Proton_Left",
"dEdx vs E (Left);E + dE (keV);dE (keV)",
104 else sirThin[0] = NULL;
106 else sirThin[1] = NULL;
108 else sirThin[2] = NULL;
110 else sirThin[3] = NULL;
113 else silThin[0] = NULL;
115 else silThin[1] = NULL;
117 else silThin[2] = NULL;
119 else silThin[3] = NULL;
122 else sirThick = NULL;
125 else silThick = NULL;
128 if (!(sirThick && (sirThin[0] || sirThin[1] || sirThin[2] || sirThin[3])) &&
129 !(silThick && (silThin[0] || silThin[1] || silThin[2] || silThin[3])))
135 static AnalysedPulseList::iterator cMusc;
136 static AnalysedPulseList::iterator cSiRThick, cSiLThick;
137 static AnalysedPulseList::iterator cSiRThin[4], cSiLThin[4];
138 cMusc = musc->begin();
140 cSiRThick = sirThick->begin();
142 cSiLThick = silThick->begin();
143 for (iSec = 0; iSec <
nSec; ++iSec)
146 cSiRThin[iSec] = (sirThin[iSec])->begin();
149 cSiLThin[iSec] = (silThin[iSec])->begin();
153 static std::vector<double> tSiRThick, tSiLThick;
154 static std::vector<double> eSiRThick, eSiLThick;
155 static unsigned int iHit, nThickHits;
157 for (; cMusc != musc->end(); ++cMusc)
159 tMusc = (*cMusc)->GetTime();
160 tSiRThick.clear(); tSiLThick.clear();
161 eSiRThick.clear(); eSiLThick.clear();
163 if ((cMusc+1) != musc->end() && ((*(cMusc + 1))->GetTime() - tMusc) <
tPP)
171 while (cSiRThick != sirThick->end()
172 && ((*cSiRThick)->GetTime() < (tMusc +
tStart)))
176 while ((cSiLThick != silThick->end())
177 && ((*cSiLThick)->GetTime() < tMusc +
tStart))
180 for (iSec = 0; iSec <
nSec; ++iSec)
183 while (cSiRThin[iSec] != sirThin[iSec]->end()
184 && ((*(cSiRThin[iSec]))->GetTime() < tMusc +
tStart))
188 while (cSiLThin[iSec] != silThin[iSec]->end()
189 && ((*(cSiLThin[iSec]))->GetTime() < tMusc +
tStart))
197 while (cSiRThick != sirThick->end()
198 && (((*cSiRThick)->GetTime() - tMusc) <
tStop))
202 tSiRThick.push_back((*cSiRThick)->GetTime());
203 eSiRThick.push_back((*cSiRThick)->GetEnergy());
211 while (cSiLThick != silThick->end()
212 && (((*cSiLThick)->GetTime() - tMusc <
tStop)))
216 tSiLThick.push_back((*cSiLThick)->GetTime());
217 eSiLThick.push_back((*cSiLThick)->GetEnergy());
223 if (tSiRThick.size() > 0)
225 nThickHits = tSiRThick.size();
226 for (iHit = 0; iHit < nThickHits; ++iHit)
229 for (iSec = 0; iSec <
nSec; ++iSec)
233 while ((cSiRThin[iSec] != sirThin[iSec]->end()) &&
237 while (cSiRThin[iSec] != sirThin[iSec]->end() &&
238 (*(cSiRThin[iSec]))->GetTime() < tSiRThick[iHit] +
tCoincidence)
241 ((*(cSiRThin[iSec]))->GetEnergy())*
slopeThin[0][iSec];
249 hEvdE[0]->Fill(E, dE);
251 if ((log(E) + log(dE) >14.5) && (log(E) + log(dE)<15.6))
260 if (tSiLThick.size() > 0)
262 nThickHits = tSiLThick.size();
263 for (iHit = 0; iHit < nThickHits; ++iHit)
266 for (iSec = 0; iSec <
nSec; ++iSec)
269 while (cSiLThin[iSec] != silThin[iSec]->end() &&
273 while (cSiLThin[iSec] != silThin[iSec]->end() &&
274 (*(cSiLThin[iSec]))->GetTime() < tSiLThick[iHit] +
tCoincidence)
277 ((*(cSiLThin[iSec]))->GetEnergy())*
slopeThin[1][iSec];
285 hEvdE[1]->Fill(E, dE);
287 if ((log(E) + log(dE) >14.5) && (log(E) + log(dE)<15.6))