#include #include #include #include //#include "runinfo.h" #include "PndMvdChargeWeightingAlgorithms.h" #include "PndMvdDigi.h" #include "PndMvdCluster.h" #include "PndMvdCalcStrip.h" using namespace std; ClassImp(PndMvdChargeWeightingAlgorithms); PndMvdChargeWeightingAlgorithms::PndMvdChargeWeightingAlgorithms(TClonesArray* arr) { fDigiArray = arr; } PndMvdChargeWeightingAlgorithms::~PndMvdChargeWeightingAlgorithms() { } /* returns the (modified) error function this is a local (private) function */ double PndMvdChargeWeightingAlgorithms::_erfmod(double x, double p0, double p1, double p2, double p3) { return ((TMath::Erf(p0*(x-p1)))*p2+p3); } double PndMvdChargeWeightingAlgorithms::center_of_gravity(const PndMvdCluster& Cluster) { double result; int nrHits = Cluster.GetClusterSize(); if(nrHits>0) // minimum of hits in cluster { double x_g=0., chargesum=0, charge=0; //double error=0.; for(int l=0;l1) { double q_inner=0.; // if(nrHits==2) q_inner=Cluster.GetChargeSum()/2.; // if(nrHits>2) q_inner=(Cluster.GetChargeSum()-Cluster.GetHit(0).GetCharge()-Cluster.GetHit(nrHits-1).GetCharge())*1./nrHits; for(int l=0;l charge) { charge=DigiCharge(Cluster.GetDigiIndex(i)); channel=DigiStripno(Cluster.GetDigiIndex(i)); } } return (channel+0.5); } double PndMvdChargeWeightingAlgorithms::eta(const PndMvdCluster& Cluster) { double ergebnis; // first calc eta! int nrHits = Cluster.GetClusterSize(); if(nrHits>1) { double ql=DigiCharge(Cluster.GetDigiIndex(0)); double qr=DigiCharge(Cluster.GetDigiIndex(nrHits-1)); int f=1, o=nrHits-2; double xl=DigiStripno(Cluster.GetDigiIndex(0))*1.; double p0,pe0,p1,pe1,p2,pe2,p3,pe3; // f(eta) parameters calc before std::ifstream InPar("/home/student/Desktop/repository/calibPar/Eta_para.par"); InPar >> p0>>pe0>>p1>>pe1>>p2>>pe2>>p3>>pe3; InPar.close(); while(f& Cluster, RunInfo& info) { for(int cID=0;cID1) { double ql=Cluster[cID].GetHit(0).GetCharge()*1.; double qr=Cluster[cID].GetHit(nrHits-1).GetCharge()*1.; int f=1, o=nrHits-2; double xl=Cluster[cID].GetHit(0).GetChannel()*1.; while(fAt(digiIndex); fCalcStrip->CalcFeChToStrip(myDigi->GetFE(), myDigi->GetChannel(), strip, side); return strip; }