215 std::vector<PndLmdStrips> strips =
GetStrips(inx, iny, inz, outx, outy,outz,eLoss);
216 cout<<
" Number of strips initially fired :"<<strips.size()<<endl;
228 Int_t inStrip = Int_t(nuIn);
229 Int_t outStrip = Int_t(nuOut);
232 Double_t dir = (nuIn<nuOut)? 1 : -1;
240 Int_t size = strips.size();
245 PndLmdStrips strip = strips.at(0);
246 Double_t path_real = strip.GetPath();
248 Int_t index = strip.GetIndex();
253 Double_t charge1, charge2, dQ, dQR, dQL;
269 cout<<
"the QL was smeared by noise :"<<dQL<<endl;
270 cout<<
"the QR was smeared by noise :"<<dQR<<endl;
277 strips.push_back(PndLmdStrips(index,path_real,dQ));
288 q_head = charge2 - charge1;
292 strips.push_back(PndLmdStrips(
id,0,dQ));
299 q_tail = charge2 - charge1;
303 strips.push_back(PndLmdStrips(
id,0,dQ));
308 strips.push_back(PndLmdStrips(index,path_real,
AddNoise(restQ)));
316 std::vector<PndLmdStrips> strip_head;
317 std::vector<PndLmdStrips> strip_tail;
318 std::vector<PndLmdStrips> strip_middle;
319 PndLmdStrips str_head;
320 PndLmdStrips str_tail;
321 PndLmdStrips str_middle;
323 if(inStrip<outStrip){
324 str_head = strips.at(0);
325 str_tail = strips.at(size-1);
327 tail_Path = Path2+(size-1)*
fPitch;
329 for(Int_t i = 1; i<size-1;i++)
330 {str_middle = strips.at(i);}
332 str_tail = strips.at(0);
333 str_head = strips.at(size-1);
335 tail_Path = Path1+(size-1)*
fPitch;
337 for(Int_t i = size-2; i>0;i--)
338 {str_middle = strips.at(i);}
341 strips.erase(strips.begin(),strips.begin()+size);
344 Int_t index_head = str_head.GetIndex();
345 Double_t path_head = str_head.GetPath();
348 Int_t index_tail = str_tail.GetIndex();
349 Double_t path_tail = str_tail.GetPath();
371 strip_head.push_back(PndLmdStrips(
id,0,dQ_head));}
374 strip_head.push_back(PndLmdStrips(
id,path_head,Q_head));}
375 strips.insert(strips.begin(),strip_head.begin(),strip_head.end());
379 strip_tail.push_back(PndLmdStrips(
id,0,dQ_tail));}
382 strip_head.push_back(PndLmdStrips(
id,path_tail,Q_tail));}
383 strips.insert(strips.end(),strip_tail.begin(),strip_tail.end());
389 dQ = charge2 - charge1;
390 std::vector<PndLmdStrips>::iterator iter_ii=strip_middle.begin();
391 id = iter_ii->GetIndex();
392 ipath = iter_ii->GetPath();
393 if(dQ>
fThreshold) strip_middle.push_back(PndLmdStrips(
id,ipath,dQ));
396 strips.insert(strips.begin()+strip_head.size(),strip_middle.begin(),strip_middle.begin()+strip_middle.size());
Double_t ChargeDiffusion(Double_t u, Double_t a, Double_t path, Double_t dir, Double_t Q)
Double_t AddNoise(Double_t charge)
std::vector< PndLmdStrips > GetStrips(Double_t inx, Double_t iny, Double_t inz, Double_t outx, Double_t outy, Double_t outz, Double_t eloss)
Double_t ChargeFromEloss(Double_t eloss) const
friend F32vec4 fabs(const F32vec4 &a)
Double_t CalStripFromPoint(Double_t x, Double_t y)