7 #include "FairRootManager.h"
8 #include "FairRunAna.h"
9 #include "FairRuntimeDb.h"
10 #include "FairGeanePro.h"
11 #include "FairGeaneUtil.h"
12 #include "FairTrackParP.h"
23 FairTask(
"Rich Reco task") ,
27 fTrackPositionSecond(0,0,0),
28 fTrackDirectionSecond(0,0,0)
42 FairRootManager *ioman = FairRootManager::Instance();
46 cout <<
"-E- PndRichRecoTask: "
47 <<
"RootManager not instantised!" << endl;
55 fRichBarPoint =
dynamic_cast<TClonesArray *
> (ioman->GetObject(
"RichBarPoint"));
59 cout <<
"-I- PndRichRecoTask: Intialisation successfull " << endl;
86 pos = TVector3(richHit->GetX(),richHit->GetY(),richHit->GetZ());
87 TVector3
p = TVector3(richHit->GetPx(),richHit->GetPy(),richHit->GetPz());
90 tm = richHit->GetTime();
95 Float_t richThetaC = -1000, richThetaCErr = 0;
96 Float_t richQuality = 1000000;
99 richQuality,richThetaC,richThetaCErr,richPhot);
102 std::cout << std::setprecision(10) << std::endl;
103 std::cout <<
"PndRichRecoTask: " <<
fEvent <<
" " << richQuality <<
" " << richThetaC
104 <<
" " << richThetaCErr <<
" " << richPhot <<
" " << 1
105 <<
" " << mom <<
" " << dir.Phi() <<
" " << dir.Theta()
106 <<
" " << pos.X() <<
" " << pos.Y() <<
" " << pdg << std::endl;
107 Double_t mass[5] = {0.000510998961,0.1056583745,0.13957018,0.493667,0.9382720813};
111 for(Int_t
i=0;
i<5;
i++)
113 Float_t richThetaCx = richThetaC;
115 pnt.
beta = richThetaCx;
118 pnt.
theta = dir.Theta();
124 pnt.
beta <<
" " << pnt.
x <<
" " << pnt.
y <<
" " << pnt.
theta <<
" " << pnt.
phi << std::endl;
127 TF1 *gausPdf =
new TF1(
"gausPdf",
"gausn",0,1);
128 gausPdf->SetParameter(0,1);
129 gausPdf->SetParameter(1,richThetaCx);
130 gausPdf->SetParameter(2,richThetaCErr);
132 pdf[
i] = gausPdf->Eval(beta);
136 std::cout <<
"particles PID: ";
137 for(Int_t
i=0;
i<5;
i++)
138 std::cout << pdf[
i] <<
" " << (pdfsum?pdf[
i]/pdfsum:0.2) <<
" " ;
139 std::cout << std::endl;
141 vdth.insert(
vdth.end(),dth.begin(),dth.end());
142 vnhits.push_back(dth.size());
143 vmean.push_back(richThetaC);
144 vsigma.push_back(richThetaCErr);
148 vth.insert(
vth.end(),th.begin(),th.end());
149 vph.insert(
vph.end(),ph.begin(),ph.end());
151 for(
size_t i=0;
i<ph.size();
i++)
152 std::cout <<
"::HitPars() " <<
fEvent <<
" " << ph.at(
i) <<
" " <<
153 th.at(
i) <<
" " << dth.at(
i) << std::endl;
158 richQuality,richThetaC,richThetaCErr,richPhot);
159 std::cout <<
"PndRichRecoTask: " <<
fEvent <<
" " << richQuality <<
" " << richThetaC
160 <<
" " << richThetaCErr <<
" " << richPhot <<
" " << 2 << std::endl;
170 std::cout <<
"::FinishTask() " <<
vmean.size() <<
" " <<
vsigma.size() << std::endl;
173 double chisq=f->GetChisquare();
174 double ndf=f->GetNDF();
175 double chisqdf=chisq/ndf;
176 std::cout <<
"Chisquare: " << chisq <<
"/" << ndf <<
" : " << chisqdf << std::endl;
186 for(
size_t i=0;
i<
vmean.size();
i++) {
190 std::cout <<
"::FinishTask() " << mean <<
" " << sig << std::endl;
191 std::cout <<
"CalData: " << chisq << std::endl;
192 std::cout <<
"CalData: " << ndf << std::endl;
193 std::cout <<
"CalData: " << nhits << std::endl;
194 std::cout <<
"CalData: " << mean << std::endl;
195 std::cout <<
"CalData: " << emean << std::endl;
196 std::cout <<
"CalData: " << sig << std::endl;
197 std::cout <<
"CalData: " << esig << std::endl;
201 chisq=f1->GetChisquare();
204 std::cout <<
"Chisquare: " << chisq <<
"/" << ndf <<
" : " << chisqdf << std::endl;
208 mean = f1->GetParameter(1);
209 emean = f1->GetParError(1);
210 sig = f1->GetParameter(2);
211 esig = f1->GetParError(2);
213 std::cout <<
"::FinishTask() " << mean <<
" " << sig << std::endl;
214 std::cout <<
"CalData: " << chisq << std::endl;
215 std::cout <<
"CalData: " << ndf << std::endl;
216 std::cout <<
"CalData: " << mean << std::endl;
217 std::cout <<
"CalData: " << emean << std::endl;
218 std::cout <<
"CalData: " << sig << std::endl;
219 std::cout <<
"CalData: " << esig << std::endl;
227 TH1F * hbetafit =
new TH1F(
"hist",
"for gauss fit", nbins, xmin, xmax);
228 for(
size_t i=0;
i<v.size();
i++)
229 hbetafit->Fill(v.at(
i));
230 int ipeak = hbetafit->GetMaximumBin();
231 double amp0 = hbetafit->GetMaximum();
232 double peak = xmin + (ipeak-0.5)*(xmax-
xmin)/nbins;
233 TF1 * gfit =
new TF1(
"Gaussian",
"gaus",xmin,xmax);
234 gfit->SetParameter(0,amp0);
235 gfit->SetParameter(1,peak);
236 gfit->SetParameter(2,sig);
237 for(
size_t i=0;
i<5;
i++) {
238 Double_t meanf = gfit->GetParameter(1);
239 Double_t sigf = gfit->GetParameter(2);
240 double xminf = meanf - 3*sigf;
241 double xmaxf = meanf + 3*sigf;
242 hbetafit->Fit(
"Gaussian",
"Q",
"",xminf,xmaxf);
TVector3 fTrackDirectionSecond
std::vector< double > GetDThetas()
std::vector< Double_t > vsigma
PndRichResolution * fRichResolution
static T Sqrt(const T &x)
std::vector< double > GetThetas()
virtual InitStatus Init()
void RichFullReconstruction(TVector3 pos, TVector3 dir, Float_t ts, Float_t &chi2, Float_t &chTh, Float_t &dChTh, Int_t &nph)
std::vector< Double_t > vmean
std::vector< Double_t > vth
TF1 * GetPeakParameters(std::vector< Double_t > v, UInt_t nbins, Double_t xmin, Double_t xmax, Double_t sig)
Double_t Shift(dbpoint pnt)
TClonesArray * fRichBarPoint
friend F32vec4 fabs(const F32vec4 &a)
std::vector< Double_t > vdth
std::vector< UInt_t > vnhits
TVector3 fTrackPositionSecond
std::vector< double > GetPhis()
Double_t Sigma(dbpoint pnt)
virtual void Exec(Option_t *opt)
std::vector< Double_t > vph