30 : FairTask(
"DigTaskSND")
31 , fScifiPointArray(nullptr)
32 , fMuFilterPointArray(nullptr)
33 , fEventHeader(nullptr)
34 , fScifiDigiHitArray(nullptr)
35 , fScifiClusterArray(nullptr)
36 , fMuFilterDigiHitArray(nullptr)
37 , fScifiHit2MCPointsArray(nullptr)
38 , fMuFilterHit2MCPointsArray(nullptr)
39 , fMakeClusterScifi(true)
40 , fCopyEmulsionPoints(false)
137 map<int, pair<vector<ScifiPoint*>, vector<float>> > hitContainer{};
139 map<pair<int, int>,
double> mcPoints{};
140 map<int, double> norm{};
141 int globsipmChan{}, detID{};
148 if (!point)
continue;
150 detID = point->GetDetectorID();
151 locFibreID = detID%100000;
158 globsipmChan = int(detID/100000)*100000+sipmChan.first;
159 weight = sipmChan.second[0];
160 hitContainer[globsipmChan].first.push_back(point);
161 hitContainer[globsipmChan].second.push_back(weight);
162 dE = point->GetEnergyLoss()*weight;
163 mcPoints[make_pair(globsipmChan, k)] = dE;
164 norm[globsipmChan]+= dE;
169 for (
auto it = hitContainer.begin(); it != hitContainer.end(); it++){
170 new ((*fScifiDigiHitArray)[index])
sndScifiHit(it->first, hitContainer[it->first].first, hitContainer[it->first].second);
172 for (
auto mcit = mcPoints.begin(); mcit != mcPoints.end(); mcit++){
173 if(it->first == mcit->first.first) mcLinks.
Add(it->first, mcit->first.second, mcPoints[make_pair(it->first, mcit->first.second)]/norm[it->first]);
176 new((*fScifiHit2MCPointsArray)[0])
Hit2MCPoints(mcLinks);
181 map<int, int > hitDict{};
182 vector<int> hitList{};
184 int index{}, ncl{}, cprev{}, c{}, last{}, first{}, N{};
188 if (!d->isValid())
continue;
189 hitDict[d->GetDetectorID()] = k ;
190 hitList.push_back(d->GetDetectorID());
192 if (hitList.size() > 0)
194 sort(hitList.begin(), hitList.end());
195 tmp.push_back(hitList[0]);
198 last = hitList.size()-1;
199 vector<sndScifiHit*> hitlist{};
200 for (
int i =0; i<hitList.size(); i++)
202 if (i==0 && hitList.size()>1)
continue;
204 if (c-cprev ==1) tmp.push_back(c);
205 if (c-cprev !=1 || c==hitList[last]){
209 for (
int j=0; j<tmp.size(); j++)
212 hitlist.push_back(aHit);
214 new ((*fScifiClusterArray)[index])
sndCluster(first, N, hitlist,
scifi);
216 if (c!=hitList[last])
231 map<int, vector<MuFilterPoint*> > hitContainer{};
233 map<pair<int, int>,
double> mcPoints{};
234 map<int, double> norm{};
240 if (!point)
continue;
242 detID = point->GetDetectorID();
243 hitContainer[detID].push_back(point);
244 mcPoints[make_pair(detID, k)] = point->GetEnergyLoss();
245 norm[detID]+= point->GetEnergyLoss();
249 for (
auto it = hitContainer.begin(); it != hitContainer.end(); it++){
250 new ((*fMuFilterDigiHitArray)[index])
MuFilterHit(it->first, hitContainer[it->first]);
252 for (
auto mcit = mcPoints.begin(); mcit != mcPoints.end(); mcit++){
253 if(it->first == mcit->first.first) mcLinks.
Add(it->first, mcit->first.second, mcPoints[make_pair(it->first, mcit->first.second)]/norm[it->first]);
256 new((*fMuFilterHit2MCPointsArray)[0])
Hit2MCPoints(mcLinks);