21          fChargeConverter(NULL),
 
   35   return ((TMath::Erf(p0*(x-p1)))*p2+p3);
 
   41   if(nrHits<2) 
return Binary(Cluster);
 
   42   std::pair<Double_t,Double_t> result;
 
   43   Double_t x_g=0., chargesum=0, charge=0, stripno=0;
 
   49   for(Int_t l=0;l<nrHits;++l)     
 
   56     x_g += charge * stripno ;
 
   57     if(
fVerbose>2) Info(
"CenterOfGravity",
"Adding digi values (stripno,charge) = (%f,%f)",stripno,charge);
 
   64     for(Int_t l=0;l<nrHits;++l)     
 
   67       if(stripno>chanmax) chanmax=stripno;
 
   68       if(stripno<chanmin) chanmin=stripno;
 
   90   if (err < 1e-15) Warning(
"CenterOfGravity",
"Got bad error value: Cluster with %i digis. Position %f +-%f chn.",nrHits,x_g,xerror);
 
   93   if(
fVerbose>1) Info(
"CenterOfGravity",
"Got a cluster with %i digis. Position %f +- %f chn.",nrHits,result.first,result.second);
 
  101   if(nrHits<2) 
return Binary(Cluster);
 
  105   std::pair<Double_t,Double_t> result;
 
  111   Double_t Q=0.,q_inner=0., charge=0.,stripno=-1.,err=0.;
 
  112   Int_t k_h=0, k_t=nrHits-1;
 
  113   for (Int_t kk=0;kk<nrHits;kk++)
 
  118     if(x_h>stripno){k_h=kk;x_h=stripno;}
 
  119     if(x_t<stripno){k_t=kk;x_t=stripno;}
 
  125   q_inner /= (nrHits-2.); 
 
  128   err=
sqrt(2.)*noise/q_inner;  
 
  140   std::pair<Double_t,Double_t> result;
 
  143   result.first=channel;
 
  144   result.second=1./
sqrt(12.);
 
  145   if(
fVerbose>1) Info(
"Median",
"Got a cluster with %i digis. Position %f +- %f chn.",nrHits,result.first,result.second);
 
  154   std::pair<Double_t,Double_t> result;
 
  157   for(Int_t 
i=0;
i<nrHits;++
i)
 
  160     if( charge > chargemax)
 
  166   result.first=channel;
 
  167   result.second=1./
sqrt(12.);
 
  168   if(
fVerbose>1) Info(
"Binary",
"Got a cluster with %i digis. Position %f +- %f chn.",nrHits,result.first,result.second);
 
  218   if(nrHits < 2.){
return Binary(Cluster);}
 
  221   std::pair<Double_t,Double_t> result;
 
  224   std::pair<Double_t,Double_t> eta_value;
 
  228   eta_value = 
EtaValue(Cluster, stripno, NmbOfStrips);
 
  231   if(Clustercharge>21)Clustercharge=21;
 
  233   result.first=stripno + PosVsEta->GetBinContent((Int_t)ceil(eta_value.first * 500.), Clustercharge);           
 
  235   result.second=(PosVsEta->GetBinContent((Int_t)ceil((eta_value.first+eta_value.second) * 500.), Clustercharge)
 
  236                - PosVsEta->GetBinContent((Int_t)ceil((eta_value.first-eta_value.second) * 500.), Clustercharge))/2.;
 
  245   std::pair<Double_t,Double_t> result;
 
  263     result.first=qr/(qr+ql);
 
  269     result.second=
sqrt(((ql/(qr+ql))*(1./(qr+ql))*(ql/(qr+ql))*(1./(qr+ql))*cherrr*cherrr)+((qr/(qr+ql))*(1./(qr+ql))*(qr/(qr+ql))*(1./(qr+ql))*cherrl*cherrl));
 
  276     Double_t ql=0., qr=0., qm=0., 
noise=0., cherrl=0., cherrr=0.;
 
  305     result.first=qr/(qr+ql);
 
  306     result.second=
sqrt(((ql/(qr+ql))*(1./(qr+ql))*(ql/(qr+ql))*(1./(qr+ql))*cherrr*cherrr)+((qr/(qr+ql))*(1./(qr+ql))*(qr/(qr+ql))*(1./(qr+ql))*cherrl*cherrl));
 
  318   Warning(
"auto_select", 
"Do not use, this selection is still wrong!");
 
std::pair< Double_t, Double_t > HeadTail(const PndSdsCluster *Cluster)
std::pair< Double_t, Double_t > Median(const PndSdsCluster *Cluster)
Int_t GetClusterSize() const 
TClonesArray * fDigiArray
Double_t DigiCharge(Int_t digiIndex)
Class to store the Digis which belong to one cluster This class holds the information which Digi belo...
friend F32vec4 sqrt(const F32vec4 &a)
Int_t DigiStripno(Int_t digiIndex)
PndSdsChargeWeightingAlgorithms(TClonesArray *arr)
Class for digitised strip hits. 
Double_t GetCharge() const 
virtual Double_t GetRelativeError(Double_t Charge)=0
virtual Double_t DigiValueToCharge(Double_t digi)=0
Converts a given digitized charge into charge in electrons. 
virtual ~PndSdsChargeWeightingAlgorithms()
Int_t GetDigiIndex(Int_t i) const 
PndSdsChargeConversion * fChargeConverter
std::pair< Double_t, Double_t > CenterOfGravity(const PndSdsCluster *Cluster)
std::pair< Double_t, Double_t > EtaValue(const PndSdsCluster *Cluster, Double_t &stripno, Int_t &NmbOfStrips)
void CalcFeChToStrip(Int_t fe, Int_t channel, Int_t &strip, enum SensorSide &side) const 
std::pair< Double_t, Double_t > Eta(const PndSdsCluster *Cluster, const TH2F *PosVsEta)
std::pair< Double_t, Double_t > Binary(const PndSdsCluster *Cluster)
Double_t GetThreshold() const 
Double_t DigiChargeError(Int_t digiIndex)
Double_t Erfmod(Double_t x, Double_t p0, Double_t p1, Double_t p2, Double_t p3)
std::pair< Double_t, Double_t > AutoSelect(const PndSdsCluster *Cluster)
PndSdsCalcStrip * fCalcStrip
Double_t GetNoise() const