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)
133 map<int, pair<vector<ScifiPoint*>, vector<float>> > hitContainer{};
135 map<pair<int, int>,
double> mcPoints{};
136 map<int, double> norm{};
137 int globsipmChan{}, detID{};
144 if (!point)
continue;
146 detID = point->GetDetectorID();
147 locFibreID = detID%100000;
154 globsipmChan = int(detID/100000)*100000+sipmChan.first;
155 weight = sipmChan.second[0];
156 hitContainer[globsipmChan].first.push_back(point);
157 hitContainer[globsipmChan].second.push_back(weight);
158 dE = point->GetEnergyLoss()*weight;
159 mcPoints[make_pair(globsipmChan, k)] = dE;
160 norm[globsipmChan]+= dE;
165 for (
auto it = hitContainer.begin(); it != hitContainer.end(); it++){
166 new ((*fScifiDigiHitArray)[index])
sndScifiHit(it->first, hitContainer[it->first].first, hitContainer[it->first].second);
168 for (
auto mcit = mcPoints.begin(); mcit != mcPoints.end(); mcit++){
169 if(it->first == mcit->first.first) mcLinks.
Add(it->first, mcit->first.second, mcPoints[make_pair(it->first, mcit->first.second)]/norm[it->first]);
172 new((*fScifiHit2MCPointsArray)[0])
Hit2MCPoints(mcLinks);
177 map<int, int > hitDict{};
178 vector<int> hitList{};
180 int index{}, ncl{}, cprev{}, c{}, last{}, first{}, N{};
184 if (!d->isValid())
continue;
185 hitDict[d->GetDetectorID()] = k ;
186 hitList.push_back(d->GetDetectorID());
188 if (hitList.size() > 0)
190 sort(hitList.begin(), hitList.end());
191 tmp.push_back(hitList[0]);
194 last = hitList.size()-1;
195 vector<sndScifiHit*> hitlist{};
196 for (
int i =0; i<hitList.size(); i++)
198 if (i==0 && hitList.size()>1)
continue;
200 if (c-cprev ==1) tmp.push_back(c);
201 if (c-cprev !=1 || c==hitList[last]){
205 for (
int j=0; j<tmp.size(); j++)
208 hitlist.push_back(aHit);
210 new ((*fScifiClusterArray)[index])
sndCluster(first, N, hitlist,
scifi);
212 if (c!=hitList[last])
227 map<int, vector<MuFilterPoint*> > hitContainer{};
229 map<pair<int, int>,
double> mcPoints{};
230 map<int, double> norm{};
236 if (!point)
continue;
238 detID = point->GetDetectorID();
239 hitContainer[detID].push_back(point);
240 mcPoints[make_pair(detID, k)] = point->GetEnergyLoss();
241 norm[detID]+= point->GetEnergyLoss();
245 for (
auto it = hitContainer.begin(); it != hitContainer.end(); it++){
246 new ((*fMuFilterDigiHitArray)[index])
MuFilterHit(it->first, hitContainer[it->first]);
248 for (
auto mcit = mcPoints.begin(); mcit != mcPoints.end(); mcit++){
249 if(it->first == mcit->first.first) mcLinks.
Add(it->first, mcit->first.second, mcPoints[make_pair(it->first, mcit->first.second)]/norm[it->first]);
252 new((*fMuFilterHit2MCPointsArray)[0])
Hit2MCPoints(mcLinks);