From 1d1bd34fd844170fa5e59e80cfb07ca6086e526f Mon Sep 17 00:00:00 2001 From: Ke Li <ke.li@cern.ch> Date: Wed, 22 Sep 2021 18:15:53 +0200 Subject: [PATCH] add a flag to control biased and unbiased residual --- .../TrackerSPFit/python/TrackerSPFit.py | 2 + .../python/TrackerSPFitTI12Data.py | 2 + .../TrackerSPFit/src/TrackerSPFit.cxx | 183 +++++++++--------- .../TrackerSPFit/src/TrackerSPFit.h | 164 ++++++++-------- 4 files changed, 174 insertions(+), 177 deletions(-) diff --git a/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFit.py b/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFit.py index cf69e95b..df0b3a82 100644 --- a/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFit.py +++ b/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFit.py @@ -23,6 +23,8 @@ def TrackerSPFitBasicCfg(flags, **kwargs): """Return ComponentAccumulator for TrackerSPFit""" acc = FaserSCT_GeometryCfg(flags) kwargs.setdefault("SpacePointsSCTName", "SCT_SpacePointContainer") + kwargs.setdefault("MaxChi2", 20) + kwargs.setdefault("UseBiasedResidual", True) acc.addEventAlgo(Tracker__TrackerSPFit(**kwargs)) # attach ToolHandles return acc diff --git a/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFitTI12Data.py b/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFitTI12Data.py index 3f21c7c8..89bcc4d6 100644 --- a/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFitTI12Data.py +++ b/Tracker/TrackerRecAlgs/TrackerSPFit/python/TrackerSPFitTI12Data.py @@ -23,6 +23,8 @@ def TrackerSPFitBasicCfg(flags, **kwargs): """Return ComponentAccumulator for TrackerSPFit""" acc = FaserSCT_GeometryCfg(flags) kwargs.setdefault("SpacePointsSCTName", "SCT_SpacePointContainer") + kwargs.setdefault("MaxChi2", 100) + kwargs.setdefault("UseBiasedResidual", True) acc.addEventAlgo(Tracker__TrackerSPFit(**kwargs)) # attach ToolHandles return acc diff --git a/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.cxx b/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.cxx index 69b4a256..1caf7ba2 100755 --- a/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.cxx +++ b/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.cxx @@ -70,12 +70,13 @@ namespace Tracker , m_residual_x_plane6(0) , m_residual_x_plane7(0) , m_residual_x_plane8(0) - // , m_chi2(0) - // , m_edm(0) - // , m_ndf(0) + , m_chi2(0) + , m_edm(0) + , m_ndf(0) , m_thistSvc("THistSvc", name) { declareProperty("MaxChi2", m_maxchi2=20); + declareProperty("UseBiasedResidual", m_bias=true); } //----------------------------------------------------------------------- @@ -136,9 +137,9 @@ namespace Tracker m_residual_x_plane6=new TH1D("sp_residual_x_plane6","sp_residual_x_plane6",2000,-1,1); m_residual_x_plane7=new TH1D("sp_residual_x_plane7","sp_residual_x_plane7",2000,-1,1); m_residual_x_plane8=new TH1D("sp_residual_x_plane8","sp_residual_x_plane8",2000,-1,1); - // m_chi2=new TH1D("chi2","chi2",100,0,100); - // m_edm=new TH1D("edm","edm",100,0,0.01); - // m_ndf=new TH1D("ndf","ndf",10,0,10); + m_chi2=new TH1D("chi2","chi2",100,0,100); + m_edm=new TH1D("edm","edm",100,0,0.01); + m_ndf=new TH1D("ndf","ndf",10,0,10); CHECK(m_thistSvc->regTree("/TrackerSPFit/spfit",m_tree)); CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_x",m_hist_x)); CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_y",m_hist_y)); @@ -176,9 +177,9 @@ namespace Tracker CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_residual_x_plane6",m_residual_x_plane6)); CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_residual_x_plane7",m_residual_x_plane7)); CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_residual_x_plane8",m_residual_x_plane8)); - // CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_chi2",m_chi2)); - // CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_edm",m_edm)); - // CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_ndf",m_ndf)); + CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_chi2",m_chi2)); + CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_edm",m_edm)); + CHECK(m_thistSvc->regHist("/TrackerSPFit/sp/sp_ndf",m_ndf)); ATH_MSG_INFO( "TrackerSPFit::initialized" ); return StatusCode::SUCCESS; } @@ -199,9 +200,9 @@ namespace Tracker m_tree->Branch("sp_y_residual",&m_sp_y_residual); m_tree->Branch("sp_z_residual",&m_sp_z_residual); m_tree->Branch("trackId",&m_trackId); - // m_tree->Branch("track_chi2",&m_track_chi2); - // m_tree->Branch("track_edm",&m_track_edm); - // m_tree->Branch("track_ndf",&m_track_ndf); + m_tree->Branch("track_chi2",&m_track_chi2); + m_tree->Branch("track_edm",&m_track_edm); + m_tree->Branch("track_ndf",&m_track_ndf); // m_tree->Branch("track_p0",&m_track_p0); // m_tree->Branch("track_p1",&m_track_p1); // m_tree->Branch("track_p2",&m_track_p2); @@ -225,9 +226,9 @@ namespace Tracker m_sp_y_residual.clear(); m_sp_z_residual.clear(); m_trackId.clear(); - // m_track_chi2.clear(); - // m_track_edm.clear(); - // m_track_ndf.clear(); + m_track_chi2.clear(); + m_track_edm.clear(); + m_track_ndf.clear(); m_sp_station.clear(); m_sp_layer.clear(); m_sp_module.clear(); @@ -353,10 +354,12 @@ namespace Tracker m_sp_station.push_back(0); m_sp_layer.push_back(track.layer); m_sp_module.push_back(track.module); - // m_track_chi2.push_back(track.chi2); - // m_track_edm.push_back(track.edm); - // m_track_ndf.push_back(track.ndf); - double* par=const_cast<double*>(track.p); + if(m_bias){ + m_track_chi2.push_back(track.chi2); + m_track_edm.push_back(track.edm); + m_track_ndf.push_back(track.ndf); + } + //double* par=const_cast<double*>(track.p); // m_track_p0.push_back(par[0]); // m_track_p1.push_back(par[1]); // m_track_p2.push_back(par[2]); @@ -392,14 +395,11 @@ namespace Tracker m_sp_station.push_back(1); m_sp_layer.push_back(track.layer); m_sp_module.push_back(track.module); - // m_track_chi2.push_back(track.chi2); - // m_track_edm.push_back(track.edm); - // m_track_ndf.push_back(track.ndf); - double* par=const_cast<double*>(track.p); - // m_track_p0.push_back(par[0]); - // m_track_p1.push_back(par[1]); - // m_track_p2.push_back(par[2]); - // m_track_p3.push_back(par[3]); + if(m_bias){ + m_track_chi2.push_back(track.chi2); + m_track_edm.push_back(track.edm); + m_track_ndf.push_back(track.ndf); + } if(track.layer==0){ m_residual_x_plane3->Fill(pre.x()-pos.x());m_residual_y_plane3->Fill(pre.y()-pos.y());} if(track.layer==1){ m_residual_x_plane4->Fill(pre.x()-pos.x());m_residual_y_plane4->Fill(pre.y()-pos.y());} if(track.layer==2){ m_residual_x_plane5->Fill(pre.x()-pos.x());m_residual_y_plane5->Fill(pre.y()-pos.y());} @@ -431,14 +431,11 @@ namespace Tracker m_sp_station.push_back(2); m_sp_layer.push_back(track.layer); m_sp_module.push_back(track.module); - // m_track_chi2.push_back(track.chi2); - // m_track_edm.push_back(track.edm); - // m_track_ndf.push_back(track.ndf); - double* par=const_cast<double*>(track.p); - // m_track_p0.push_back(par[0]); - // m_track_p1.push_back(par[1]); - // m_track_p2.push_back(par[2]); - // m_track_p3.push_back(par[3]); + if(m_bias){ + m_track_chi2.push_back(track.chi2); + m_track_edm.push_back(track.edm); + m_track_ndf.push_back(track.ndf); + } if(track.layer==0){ m_residual_x_plane6->Fill(pre.x()-pos.x());m_residual_y_plane6->Fill(pre.y()-pos.y());} if(track.layer==1){ m_residual_x_plane7->Fill(pre.x()-pos.x());m_residual_y_plane7->Fill(pre.y()-pos.y());} if(track.layer==2){ m_residual_x_plane8->Fill(pre.x()-pos.x());m_residual_y_plane8->Fill(pre.y()-pos.y());} @@ -478,8 +475,14 @@ namespace Tracker for(unsigned int i0=0;i0<layer0.size();i0++){ for(unsigned int i1=0;i1<layer1.size();i1++){ for(unsigned int i2=0;i2<layer2.size();i2++){ - auto tmp=makeTrackSeg(layer0[i0],layer1[i1],layer2[i2],maxchi2); - tracks.insert(tracks.end(),tmp.begin(),tmp.end()); + if(m_bias){ + auto tmp=makeTrackSeg(layer0[i0],layer1[i1],layer2[i2],maxchi2); + tracks.insert(tracks.end(),tmp.begin(),tmp.end()); + } + else{ + auto tmp=makeTrackSeg(layer0[i0],layer1[i1],layer2[i2]); + tracks.insert(tracks.end(),tmp.begin(),tmp.end()); + } } } } @@ -487,7 +490,7 @@ namespace Tracker return tracks; } - std::vector<TrackerSPFit::SP_TSOS> TrackerSPFit::makeTrackSeg(SP_Seed sp0, SP_Seed sp1, SP_Seed sp2, double maxchi2) const{ + std::vector<TrackerSPFit::SP_TSOS> TrackerSPFit::makeTrackSeg(SP_Seed sp0, SP_Seed sp1, SP_Seed sp2) const{ std::vector<SP_TSOS> spt; spt.clear(); for(int isp=0;isp<3;isp++){ @@ -524,60 +527,58 @@ namespace Tracker } return spt; } - /* - std::vector<TrackerSPFit::SP_TSOS> TrackerSPFit::makeTrackSeg(SP_Seed sp0, SP_Seed sp1, SP_Seed sp2, double maxchi2) const{ - std::vector<SP_TSOS> spt; - spt.clear(); - TGraph2DErrors* gra= new TGraph2DErrors(); - gra->SetPoint(0,sp0.pos.x(),sp0.pos.y(),sp0.pos.z()); - gra->SetPoint(1,sp1.pos.x(),sp1.pos.y(),sp1.pos.z()); - gra->SetPoint(2,sp2.pos.x(),sp2.pos.y(),sp2.pos.z()); - gra->SetPointError(0,sqrt((sp0.cov)(0,0)),sqrt((sp0.cov)(1,1)),sqrt((sp0.cov)(2,2))); - gra->SetPointError(1,sqrt((sp1.cov)(0,0)),sqrt((sp1.cov)(1,1)),sqrt((sp1.cov)(2,2))); - gra->SetPointError(2,sqrt((sp2.cov)(0,0)),sqrt((sp2.cov)(1,1)),sqrt((sp2.cov)(2,2))); - - std::cout<<" spacepoints in the station"<<std::endl; - std::cout<<"sp 0 "<<sp0.pos.x()<<" "<<sp0.pos.y()<<" "<<sp0.pos.z()<<" "<<sqrt((sp0.cov)(0,0))<<" "<<sqrt((sp0.cov)(1,1))<<" "<<sqrt((sp0.cov)(2.2))<<std::endl; - std::cout<<"sp 1 "<<sp1.pos.x()<<" "<<sp1.pos.y()<<" "<<sp1.pos.z()<<" "<<sqrt((sp1.cov)(0,0))<<" "<<sqrt((sp1.cov)(1,1))<<" "<<sqrt((sp1.cov)(2.2))<<std::endl; - std::cout<<"sp 2 "<<sp2.pos.x()<<" "<<sp2.pos.y()<<" "<<sp2.pos.z()<<" "<<sqrt((sp2.cov)(0,0))<<" "<<sqrt((sp2.cov)(1,1))<<" "<<sqrt((sp2.cov)(2.2))<<std::endl; - ROOT::Fit::Fitter fitter; - SumDistance2 sumdist(gra); - ROOT::Math::Functor fcn(sumdist,4); - double initParam[4]={1,1,1,1}; - fitter.SetFCN(fcn,initParam); -// for (int i = 0; i < 4; ++i) fitter.Config().ParSettings(i).SetStepSize(0.01); -if(fitter.FitFCN()){ -const ROOT::Fit::FitResult & result =fitter.Result(); -double chi2=result.MinFcnValue(); -double edm=result.Edm(); -int ndf=result.Ndf(); -ATH_MSG_DEBUG( "TrackerSPFit::makeTrackSeg(), track chi2 = "<<chi2<<" ; edm = "<<edm<<" ; ndf = "<<ndf ); -m_chi2->Fill(chi2); -m_edm->Fill(edm); -m_ndf->Fill(ndf); - -if(chi2<maxchi2){ -result.Print(std::cout); -const double *fitParam=result.GetParams(); -std::cout<<" fit status: ook "<<chi2<<" "<<edm<<" "<<ndf<<" "<<fitParam[0]<<" "<<fitParam[1]<<" "<<fitParam[2]<<" "<<fitParam[3]<<std::endl; -Amg::Vector3D err0(sqrt((sp0.cov)(0,0)),sqrt((sp0.cov)(1,1)),sqrt((sp0.cov)(2,2))); -Amg::Vector3D err1(sqrt((sp1.cov)(0,0)),sqrt((sp1.cov)(1,1)),sqrt((sp1.cov)(2,2))); -Amg::Vector3D err2(sqrt((sp2.cov)(0,0)),sqrt((sp2.cov)(1,1)),sqrt((sp2.cov)(2,2))); -struct SP_TSOS tsos0{sp0.pos,predicted(sp0.pos.z(),fitParam),err0,sp0.layer,sp0.module,chi2,edm,ndf,fitParam}; -struct SP_TSOS tsos1{sp1.pos,predicted(sp1.pos.z(),fitParam),err1,sp1.layer,sp0.module,chi2,edm,ndf,fitParam}; -struct SP_TSOS tsos2{sp2.pos,predicted(sp2.pos.z(),fitParam),err2,sp2.layer,sp0.module,chi2,edm,ndf,fitParam}; -spt.push_back(tsos0); -spt.push_back(tsos1); -spt.push_back(tsos2); -} -} + std::vector<TrackerSPFit::SP_TSOS> TrackerSPFit::makeTrackSeg(SP_Seed sp0, SP_Seed sp1, SP_Seed sp2, double maxchi2) const{ + std::vector<SP_TSOS> spt; + spt.clear(); + TGraph2DErrors* gra= new TGraph2DErrors(); + gra->SetPoint(0,sp0.pos.x(),sp0.pos.y(),sp0.pos.z()); + gra->SetPoint(1,sp1.pos.x(),sp1.pos.y(),sp1.pos.z()); + gra->SetPoint(2,sp2.pos.x(),sp2.pos.y(),sp2.pos.z()); + gra->SetPointError(0,sqrt((sp0.cov)(0,0)),sqrt((sp0.cov)(1,1)),sqrt((sp0.cov)(2,2))); + gra->SetPointError(1,sqrt((sp1.cov)(0,0)),sqrt((sp1.cov)(1,1)),sqrt((sp1.cov)(2,2))); + gra->SetPointError(2,sqrt((sp2.cov)(0,0)),sqrt((sp2.cov)(1,1)),sqrt((sp2.cov)(2,2))); + + std::cout<<" spacepoints in the station"<<std::endl; + std::cout<<"sp 0 "<<sp0.pos.x()<<" "<<sp0.pos.y()<<" "<<sp0.pos.z()<<" "<<sqrt((sp0.cov)(0,0))<<" "<<sqrt((sp0.cov)(1,1))<<" "<<sqrt((sp0.cov)(2.2))<<std::endl; + std::cout<<"sp 1 "<<sp1.pos.x()<<" "<<sp1.pos.y()<<" "<<sp1.pos.z()<<" "<<sqrt((sp1.cov)(0,0))<<" "<<sqrt((sp1.cov)(1,1))<<" "<<sqrt((sp1.cov)(2.2))<<std::endl; + std::cout<<"sp 2 "<<sp2.pos.x()<<" "<<sp2.pos.y()<<" "<<sp2.pos.z()<<" "<<sqrt((sp2.cov)(0,0))<<" "<<sqrt((sp2.cov)(1,1))<<" "<<sqrt((sp2.cov)(2.2))<<std::endl; + ROOT::Fit::Fitter fitter; + SumDistance2 sumdist(gra); + ROOT::Math::Functor fcn(sumdist,4); + double initParam[4]={1,1,1,1}; + fitter.SetFCN(fcn,initParam); + // for (int i = 0; i < 4; ++i) fitter.Config().ParSettings(i).SetStepSize(0.01); + if(fitter.FitFCN()){ + const ROOT::Fit::FitResult & result =fitter.Result(); + double chi2=result.MinFcnValue(); + double edm=result.Edm(); + int ndf=result.Ndf(); + ATH_MSG_DEBUG( "TrackerSPFit::makeTrackSeg(), track chi2 = "<<chi2<<" ; edm = "<<edm<<" ; ndf = "<<ndf ); + m_chi2->Fill(chi2); + m_edm->Fill(edm); + m_ndf->Fill(ndf); + + if(chi2<maxchi2){ + result.Print(std::cout); + const double *fitParam=result.GetParams(); + std::cout<<" fit status: ook "<<chi2<<" "<<edm<<" "<<ndf<<" "<<fitParam[0]<<" "<<fitParam[1]<<" "<<fitParam[2]<<" "<<fitParam[3]<<std::endl; + Amg::Vector3D err0(sqrt((sp0.cov)(0,0)),sqrt((sp0.cov)(1,1)),sqrt((sp0.cov)(2,2))); + Amg::Vector3D err1(sqrt((sp1.cov)(0,0)),sqrt((sp1.cov)(1,1)),sqrt((sp1.cov)(2,2))); + Amg::Vector3D err2(sqrt((sp2.cov)(0,0)),sqrt((sp2.cov)(1,1)),sqrt((sp2.cov)(2,2))); + struct SP_TSOS tsos0{sp0.pos,predicted(sp0.pos.z(),fitParam),err0,sp0.layer,sp0.module,chi2,edm,ndf}; + struct SP_TSOS tsos1{sp1.pos,predicted(sp1.pos.z(),fitParam),err1,sp1.layer,sp0.module,chi2,edm,ndf}; + struct SP_TSOS tsos2{sp2.pos,predicted(sp2.pos.z(),fitParam),err2,sp2.layer,sp0.module,chi2,edm,ndf}; + spt.push_back(tsos0); + spt.push_back(tsos1); + spt.push_back(tsos2); + } + } -return spt; -} -*/ + return spt; + } -Amg::Vector3D TrackerSPFit::predicted(double z, const double *p) const { - return Amg::Vector3D(p[0]+p[1]*z,p[2]+p[3]*z,z); -} + Amg::Vector3D TrackerSPFit::predicted(double z, const double *p) const { + return Amg::Vector3D(p[0]+p[1]*z,p[2]+p[3]*z,z); + } } diff --git a/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.h b/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.h index 432befef..cf025ad0 100755 --- a/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.h +++ b/Tracker/TrackerRecAlgs/TrackerSPFit/src/TrackerSPFit.h @@ -60,10 +60,11 @@ namespace Tracker virtual StatusCode finalize() override; struct SP_Seed{Amg::Vector3D pos; Amg::MatrixX cov; int layer; int module;}; - //struct SP_TSOS{Amg::Vector3D pos; Amg::Vector3D predicted; Amg::Vector3D err; int layer;int module; double chi2; double edm; int ndf; const double *p;}; - struct SP_TSOS{Amg::Vector3D pos; Amg::Vector3D predicted; Amg::Vector3D err; int layer;int module; const double *p;}; + struct SP_TSOS{Amg::Vector3D pos; Amg::Vector3D predicted; Amg::Vector3D err; int layer;int module; double chi2=-1.; double edm=-1.; int ndf=-1;}; + //struct SP_TSOS{Amg::Vector3D pos; Amg::Vector3D predicted; Amg::Vector3D err; int layer;int module; const double *p;}; std::vector<SP_TSOS> makeTrackSeg(std::vector<SP_Seed> sps, double maxchi2) const; std::vector<SP_TSOS> makeTrackSeg(SP_Seed sp0, SP_Seed sp1, SP_Seed sp2, double maxchi2) const; + std::vector<SP_TSOS> makeTrackSeg(SP_Seed sp0, SP_Seed sp1, SP_Seed sp2) const; Amg::Vector3D predicted(double z, const double *p) const; // function Object to be minimized @@ -78,13 +79,6 @@ namespace Tracker double xchi2= (xpred-x)*(xpred-x)/xe/xe; double ychi2= (ypred-y)*(ypred-y)/ye/ye; double d2=xchi2+ychi2; - // distance line point is D= | (xp-x0) cross ux | - // where ux is direction of line and x0 is a point in the line (like t = 0) - // ROOT::Math::XYZVector xp(x,y,z); - // ROOT::Math::XYZVector x0(p[0], p[2], 0. ); - // ROOT::Math::XYZVector x1(p[0] + p[1], p[2] + p[3], 1. ); - // ROOT::Math::XYZVector u = (x1-x0).Unit(); - // double d2 = ((xp-x0).Cross(u)).Mag2(); return d2; } // implementation of the function to be minimized @@ -112,88 +106,86 @@ namespace Tracker TrackerSPFit() = delete; TrackerSPFit(const TrackerSPFit&) =delete; TrackerSPFit &operator=(const TrackerSPFit&) = delete; - //@} SG::ReadHandleKey<FaserSCT_SpacePointContainer> m_Sct_spcontainerKey{this, "SpacePointsSCTName", "SCT_SpacePointContainer"}; - //@} SG::ReadCondHandleKey<TrackerDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}; - //@} -const FaserSCT_ID* m_idHelper{nullptr}; -mutable std::atomic<int> m_numberOfEvents{0}; -mutable std::atomic<int> m_numberOfSCT{0}; -mutable std::atomic<int> m_numberOfTrack{0}; -mutable std::atomic<int> m_numberOfSP{0}; -//@} -TH1* m_hist_x; -TH1* m_hist_y; -TH1* m_hist_z; -TH1* m_hist_r; -TH1* m_hist_eta; -TH1* m_hist_phi; -TH1* m_hist_station; -TH1* m_hist_strip; -TH1* m_hist_layer; -TH2* m_hist_x_y_plane0; -TH2* m_hist_x_y_plane1; -TH2* m_hist_x_y_plane2; -TH2* m_hist_x_y_plane3; -TH2* m_hist_x_y_plane4; -TH2* m_hist_x_y_plane5; -TH2* m_hist_x_y_plane6; -TH1* m_hist_x_y_plane7; -TH1* m_hist_x_y_plane8; -TH1* m_residual_y_plane0; -TH1* m_residual_y_plane1; -TH1* m_residual_y_plane2; -TH1* m_residual_y_plane3; -TH1* m_residual_y_plane4; -TH1* m_residual_y_plane5; -TH1* m_residual_y_plane6; -TH1* m_residual_y_plane7; -TH1* m_residual_y_plane8; -TH1* m_residual_x_plane0; -TH1* m_residual_x_plane1; -TH1* m_residual_x_plane2; -TH1* m_residual_x_plane3; -TH1* m_residual_x_plane4; -TH1* m_residual_x_plane5; -TH1* m_residual_x_plane6; -TH1* m_residual_x_plane7; -TH1* m_residual_x_plane8; -//TH1* m_chi2; -//TH1* m_edm; -//TH1* m_ndf; -ServiceHandle<ITHistSvc> m_thistSvc; - -mutable int m_eventNumber; -mutable std::vector<double> m_sp_x; -mutable std::vector<double> m_sp_y; -mutable std::vector<double> m_sp_z; -mutable std::vector<double> m_sp_x_err; -mutable std::vector<double> m_sp_y_err; -mutable std::vector<double> m_sp_z_err; -mutable std::vector<double> m_sp_x_predicted; -mutable std::vector<double> m_sp_y_predicted; -mutable std::vector<double> m_sp_z_predicted; -mutable std::vector<double> m_sp_x_residual; -mutable std::vector<double> m_sp_y_residual; -mutable std::vector<double> m_sp_z_residual; -mutable std::vector<int> m_trackId; -//mutable std::vector<double> m_track_chi2; -//mutable std::vector<double> m_track_edm; -//mutable std::vector<int> m_track_ndf; -// mutable std::vector<double> m_track_p0; -// mutable std::vector<double> m_track_p1; -// mutable std::vector<double> m_track_p2; -// mutable std::vector<double> m_track_p3; -mutable std::vector<int> m_sp_station; -mutable std::vector<int> m_sp_layer; -mutable std::vector<int> m_sp_module; -double m_maxchi2; - -}; + const FaserSCT_ID* m_idHelper{nullptr}; + mutable std::atomic<int> m_numberOfEvents{0}; + mutable std::atomic<int> m_numberOfSCT{0}; + mutable std::atomic<int> m_numberOfTrack{0}; + mutable std::atomic<int> m_numberOfSP{0}; + //@} + TH1* m_hist_x; + TH1* m_hist_y; + TH1* m_hist_z; + TH1* m_hist_r; + TH1* m_hist_eta; + TH1* m_hist_phi; + TH1* m_hist_station; + TH1* m_hist_strip; + TH1* m_hist_layer; + TH2* m_hist_x_y_plane0; + TH2* m_hist_x_y_plane1; + TH2* m_hist_x_y_plane2; + TH2* m_hist_x_y_plane3; + TH2* m_hist_x_y_plane4; + TH2* m_hist_x_y_plane5; + TH2* m_hist_x_y_plane6; + TH1* m_hist_x_y_plane7; + TH1* m_hist_x_y_plane8; + TH1* m_residual_y_plane0; + TH1* m_residual_y_plane1; + TH1* m_residual_y_plane2; + TH1* m_residual_y_plane3; + TH1* m_residual_y_plane4; + TH1* m_residual_y_plane5; + TH1* m_residual_y_plane6; + TH1* m_residual_y_plane7; + TH1* m_residual_y_plane8; + TH1* m_residual_x_plane0; + TH1* m_residual_x_plane1; + TH1* m_residual_x_plane2; + TH1* m_residual_x_plane3; + TH1* m_residual_x_plane4; + TH1* m_residual_x_plane5; + TH1* m_residual_x_plane6; + TH1* m_residual_x_plane7; + TH1* m_residual_x_plane8; + TH1* m_chi2; + TH1* m_edm; + TH1* m_ndf; + ServiceHandle<ITHistSvc> m_thistSvc; + + mutable int m_eventNumber; + mutable std::vector<double> m_sp_x; + mutable std::vector<double> m_sp_y; + mutable std::vector<double> m_sp_z; + mutable std::vector<double> m_sp_x_err; + mutable std::vector<double> m_sp_y_err; + mutable std::vector<double> m_sp_z_err; + mutable std::vector<double> m_sp_x_predicted; + mutable std::vector<double> m_sp_y_predicted; + mutable std::vector<double> m_sp_z_predicted; + mutable std::vector<double> m_sp_x_residual; + mutable std::vector<double> m_sp_y_residual; + mutable std::vector<double> m_sp_z_residual; + mutable std::vector<int> m_trackId; + mutable std::vector<double> m_track_chi2; + mutable std::vector<double> m_track_edm; + mutable std::vector<int> m_track_ndf; + // mutable std::vector<double> m_track_p0; + // mutable std::vector<double> m_track_p1; + // mutable std::vector<double> m_track_p2; + // mutable std::vector<double> m_track_p3; + mutable std::vector<int> m_sp_station; + mutable std::vector<int> m_sp_layer; + mutable std::vector<int> m_sp_module; + double m_maxchi2; + bool m_bias; + + }; } #endif // TrackerSpacePointMakerAlg_TRACKERSPACEPOINTMAKERALG_H -- GitLab