15 fNextPixel(kPixelUNDEF),
31 fThreshold(threshold),
36 fNextPixel(kPixelUNDEF),
50 std::vector<Int_t>&
cols, std::vector<Int_t>& rows,
51 std::vector<Double_t>& charges)
53 std::vector<PndSdsPixel> pixels =
GetPixels(inx,iny,outx,outy,energy);
54 Int_t npix=pixels.size();
55 for(Int_t
i=0;
i<npix;
i++)
57 if(
fVerboseLevel>2) Info(
"PndSdsCalcPixel::GetPixelsAlternative()",
"pass this pixel: i=%i, c=%i, r=%i, q=%f",
i,pixels[
i].GetCol(),pixels[
i].GetRow(),pixels[
i].GetCharge());
58 cols.push_back(pixels[
i].GetCol());
59 rows.push_back(pixels[
i].GetRow());
60 charges.push_back(pixels[
i].GetCharge());
71 fIn.setXYZ(inx, iny, 0);
72 fOut.setXYZ(outx, outy, 0);
76 if (
fDir.length() < 0.001){
85 std::cout <<
"Converted Vectors: " << std::endl;
94 while (
fStop !=
true){
103 case kPixelUNDEF : std::cout <<
"PndSdsCalcPixel::GetPixels no next pixel."<<std::endl;
break;
144 else if (
fDir.getY() > 0)
150 std::cout <<
"CalcQuadrant: " <<
fQuad << std::endl;
156 Double_t Charge = Energy / (3.61e-9);
172 FairGeoVector OutPoint;
173 bool xBeforeY =
false;
188 if (
fabs(
fDir.getX()) < 1e-8 ) xBeforeY =
false;
189 else if ( ( (borderX -
fPos.getX()) *
fDir.getY() /
fDir.getX() )+
fPos.getY() < borderY)
191 else xBeforeY =
false;
195 if (
fabs(
fDir.getX()) < 1e-8 ) xBeforeY =
false;
196 else if ( ( (borderX -
fPos.getX()) *
fDir.getY() /
fDir.getX() )+
fPos.getY() < borderY)
198 else xBeforeY =
false;
202 if (
fabs(
fDir.getX()) < 1e-8 ) xBeforeY =
false;
203 else if ( ( (borderX -
fPos.getX()) *
fDir.getY() /
fDir.getX() )+
fPos.getY() > borderY)
205 else xBeforeY =
false;
209 if (
fabs(
fDir.getX()) < 1e-8 ) xBeforeY =
false;
210 else if ( ( (borderX -
fPos.getX()) *
fDir.getY() /
fDir.getX() )+
fPos.getY() > borderY)
212 else xBeforeY =
false;
214 case kQuadUNDEF : std::cout<<
"PndSdsCalcPixel::CalcPixel : Quadrant not defined!"<<std::endl;
219 OutPoint.setXYZ(borderX, ((borderX-
fPos.getX())*
fDir.getY()/
fDir.getX())+
fPos.getY(),0);
226 OutPoint.setXYZ(((borderY-
fPos.getY())*
fDir.getX()/
fDir.getY())+
fPos.getX(), borderY,0);
235 if ((OutPoint -
fPos).length() > (
fOut -
fPos).length()){
243 printf(
"len: %g, cperL: %g, depCharge w/o noise: %g\n",(OutPoint -
fPos).length(),
fCperL,depCharge);
275 out <<
"PixelWidth: " <<
fPixelWidth <<
" PixelLength: " <<
285 if (
fVerboseLevel > 3) std::cout<<
" charge = "<<charge<<
", smeared = "<<smeared<<std::endl;
printf("RealTime=%f seconds, CpuTime=%f seconds\n", rtime, ctime)
void CalcCperL(Double_t Energy)
Double_t SmearCharge(Double_t charge)
std::vector< PndSdsPixel > fPixels
void SetCharge(Double_t charge)
std::vector< PndSdsPixel > GetPixels(Double_t inx, Double_t iny, Double_t outx, Double_t outy, Double_t energy)
Main function to calculate the vector
of fired pixel.
friend F32vec4 fabs(const F32vec4 &a)
ENextPixelType fNextPixel
Int_t GetPixelsAlternative(Double_t inx, Double_t iny, Double_t outx, Double_t outy, Double_t energy, std::vector< Int_t > &cols, std::vector< Int_t > &rows, std::vector< Double_t > &charges)
PndSdsCalcPixel()
Default constructor.
std::ostream & operator<<(std::ostream &out)