101 float ti = 0, mom = 0;
103 std::vector<float> eLossVector;
105 Vc::float_v* mWkn =
new Vc::float_v[
fnSet];
106 Vc::float_v resWkn = 0;
107 Vc::float_v numTr = 0;
113 unsigned short nTracks =
fTrackArray->GetEntriesFast();
114 unsigned short nTrue = 0;
116 for (
unsigned short itr = 0; itr < nTracks; itr++) {
124 for (
unsigned short itrack = 0; itrack < nTrue; itrack++) {
132 fEmp = 0.0002598 * mom * mom * mom - 0.008862 * mom * mom + 0.1176 * mom + 0.9129;
133 fXi = 0.00008938 * mom * mom * mom - 0.003022 * mom * mom + 0.03999 * mom + 0.5292;
135 for (Int_t iHit = 0; iHit < NHits; iHit++) {
138 eLossVector.push_back((trdHit->
GetELoss()) * 1000000);
141 for (
unsigned int jVec = 0; jVec < eLossVector.size(); jVec++)
142 eLossVector[jVec] = (eLossVector[jVec] -
fEmp) /
fXi - 0.225;
144 sort(eLossVector.begin(), eLossVector.end());
146 for (
unsigned int jVec = 0; jVec < eLossVector.size(); jVec++)
147 eLossVector[jVec] = TMath::LandauI(eLossVector[jVec]);
149 for (Int_t iHit = 0; iHit <
fnSet; iHit++)
150 mWkn[iHit][iV] = eLossVector[NHits -
fnSet + iHit];
154 if (!((iV == Vc::float_v::Size) || ((itrack == (nTrue - 1)) && (iV != 0))))
continue;
156 Vc::float_v sumWkn = 0;
157 for (Int_t iHit = 0; iHit <
fnSet; iHit++) {
159 Vc::float_v g1 = (ti - 1) /
fnSet - mWkn[iHit];
160 Vc::float_v g2 = ti /
fnSet - mWkn[iHit];
161 Vc::float_v s1 = 1, s2 = 1;
162 for (
int iPow = 0; iPow < 5; iPow++) {
174 for (Int_t iHit = 0; iHit < iV; iHit++) {
187 static Double_t rtime = 0;
188 rtime += timer.RealTime();
189 static Double_t ctime = 0;
190 ctime += timer.CpuTime();
191 cout << endl << endl;
192 cout <<
"--CbmTrdSetTracksPidModWkn--" << endl;
193 cout <<
"Real time " << (rtime / Double_t(nEv)) <<
" s, CPU time " << (ctime / Double_t(nEv)) <<
"s" << endl << endl;