From eb8d56506d6f60c83f2c84719306a0b98ed60a88 Mon Sep 17 00:00:00 2001 From: AndreaCoccaro <andrea.coccaro@cern.ch> Date: Tue, 11 May 2021 14:58:41 +0200 Subject: [PATCH] making seeds with first two stations --- .../src/TrackerSeedFinder.cxx | 106 ++++++++---------- .../TrackerSeedFinder/src/TrackerSeedFinder.h | 23 ++-- 2 files changed, 59 insertions(+), 70 deletions(-) diff --git a/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.cxx b/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.cxx index f5099f4a..2237aad5 100755 --- a/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.cxx +++ b/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.cxx @@ -144,24 +144,52 @@ namespace Tracker //------------------------------------------------------------------------- - StatusCode TrackerSeedFinder::makeTriplets(vector<vector<const Trk::SpacePoint*> >& v, unsigned int id, string s) const { - - //double xs=0,x2s=0,ys=0,xys=0; - - if (id >= v.size()) { - //ATH_MSG_VERBOSE(strSoFar); - cout << s << endl; - - //xs=xs+v[id] (*it).second->globalPosition().x(); - //ys=ys+(*it).second->globalPosition().y(); - //x2s=x2s+pow((*it).second->globalPosition().x(),2); - //xys=xys+(*it).second->globalPosition().x()*(*it).second->globalPosition().y(); - - return StatusCode::SUCCESS; - } - for (unsigned int i=0; i<v[id].size(); i++) - ATH_CHECK(makeTriplets(v, id+1, " ciao ")); + StatusCode TrackerSeedFinder::make_triplets(vector<vector<const Trk::SpacePoint*> >& vsp, vector<seed>& vseed, string st) const { + + double xs=0, ys=0, zs=0, z2s=0, xzs=0, yzs=0; + + for (unsigned int i=0; i<vsp[0].size(); i++) { + for (unsigned int j=0; j<vsp[1].size(); j++) { + for (unsigned int k=0; k<vsp[2].size(); k++) { + + ATH_MSG_VERBOSE( " station 1 / list of space points for triplets " + << vsp[0].at(i)->clusterList().first->identify() << " " + << vsp[1].at(j)->clusterList().first->identify() << " " + << vsp[2].at(k)->clusterList().first->identify()); + + vector<double> x; vector<double> y; vector<double> z; + x.push_back(vsp[0].at(i)->globalPosition().x()); x.push_back(vsp[1].at(j)->globalPosition().x()); x.push_back(vsp[2].at(k)->globalPosition().x()); + y.push_back(vsp[0].at(i)->globalPosition().y()); y.push_back(vsp[1].at(j)->globalPosition().y()); y.push_back(vsp[2].at(k)->globalPosition().y()); + z.push_back(vsp[0].at(i)->globalPosition().z()); z.push_back(vsp[1].at(j)->globalPosition().z()); z.push_back(vsp[2].at(k)->globalPosition().z()); + + xs=x.at(0)+x.at(1)+x.at(2); ys=y.at(0)+y.at(1)+y.at(2); zs=z.at(0)+z.at(1)+z.at(2); + z2s=pow(z.at(0),2)+pow(z.at(1),2)+pow(z.at(2),2); + xzs=x.at(0)*z.at(0)+x.at(1)*z.at(1)+x.at(2)*z.at(2); + yzs=y.at(0)*z.at(0)+y.at(1)*z.at(1)+y.at(2)*z.at(2); + seed m_seed; + m_seed.axz=(3*xzs-xs*zs)/(3*z2s-zs*zs); + m_seed.bxz=(z2s*xs-xzs*zs)/(3*z2s-zs*zs); + m_seed.ayz=(3*yzs-ys*zs)/(3*z2s-zs*zs); + m_seed.byz=(z2s*ys-yzs*zs)/(3*z2s-zs*zs); + m_seed.add_sp(vsp[0].at(i)); m_seed.add_sp(vsp[1].at(j)); m_seed.add_sp(vsp[2].at(k)); + m_seed.station=st; + + for(int pos=0; pos<3; pos++) { + m_seed.chi2_xz+=pow(x.at(pos)-(m_seed.axz*z.at(pos)+m_seed.bxz),2); + m_seed.chi2_yz+=pow(x.at(pos)-(m_seed.ayz*z.at(pos)+m_seed.byz),2); + } + + ATH_MSG_VERBOSE( " linear fit on plane xz / slope " << m_seed.axz << "; intercept " << m_seed.bxz); + ATH_MSG_VERBOSE( " linear fit on plane yz / slope " << m_seed.ayz << "; intercept " << m_seed.byz); + ATH_MSG_VERBOSE( " chi2 / on plane xz " << m_seed.chi2_xz << "; on plane yz " << m_seed.chi2_yz); + + vseed.push_back(m_seed); + + } + } + } + return StatusCode::SUCCESS; } @@ -277,49 +305,9 @@ namespace Tracker ATH_MSG_VERBOSE( " 2nd station " << N_2_0+N_2_1+N_2_2 << " (" << vsp2.at(0).size() << ";" << vsp2.at(1).size() << ";" << vsp2.at(2).size() << ")"); ATH_MSG_VERBOSE( " 3rd station " << N_3_0+N_3_1+N_3_2 << " (" << vsp3.at(0).size() << ";" << vsp3.at(1).size() << ";" << vsp3.at(2).size() << ")"); - double xs=0, ys=0, zs=0, z2s=0, xzs=0, yzs=0; vector<seed> vseed; - - for (unsigned int i=0; i<vsp1[0].size(); i++) { - for (unsigned int j=0; j<vsp1[1].size(); j++) { - for (unsigned int k=0; k<vsp1[2].size(); k++) { - - ATH_MSG_VERBOSE( " station 1 / list of space points for triplets " - << vsp1[0].at(i)->clusterList().first->identify() << " " - << vsp1[1].at(j)->clusterList().first->identify() << " " - << vsp1[2].at(k)->clusterList().first->identify()); - - vector<double> x; vector<double> y; vector<double> z; - x.push_back(vsp1[0].at(i)->globalPosition().x()); x.push_back(vsp1[1].at(j)->globalPosition().x()); x.push_back(vsp1[2].at(k)->globalPosition().x()); - y.push_back(vsp1[0].at(i)->globalPosition().y()); y.push_back(vsp1[1].at(j)->globalPosition().y()); y.push_back(vsp1[2].at(k)->globalPosition().y()); - z.push_back(vsp1[0].at(i)->globalPosition().z()); z.push_back(vsp1[1].at(j)->globalPosition().z()); z.push_back(vsp1[2].at(k)->globalPosition().z()); - - xs=x.at(0)+x.at(1)+x.at(2); ys=y.at(0)+y.at(1)+y.at(2); zs=z.at(0)+z.at(1)+z.at(2); - z2s=pow(z.at(0),2)+pow(z.at(1),2)+pow(z.at(2),2); - xzs=x.at(0)*z.at(0)+x.at(1)*z.at(1)+x.at(2)*z.at(2); - yzs=y.at(0)*z.at(0)+y.at(1)*z.at(1)+y.at(2)*z.at(2); - - seed m_seed; - m_seed.axz=(3*xzs-xs*zs)/(3*z2s-zs*zs); - m_seed.bxz=(z2s*xs-xzs*zs)/(3*z2s-zs*zs); - m_seed.ayz=(3*yzs-ys*zs)/(3*z2s-zs*zs); - m_seed.byz=(z2s*ys-yzs*zs)/(3*z2s-zs*zs); - m_seed.add_sp(vsp1[0].at(i)); m_seed.add_sp(vsp1[1].at(j)); m_seed.add_sp(vsp1[2].at(k)); - - for(int pos=0; pos<3; pos++) { - m_seed.chi2_xz+=pow(x.at(pos)-(m_seed.axz*z.at(pos)+m_seed.bxz),2); - m_seed.chi2_yz+=pow(x.at(pos)-(m_seed.ayz*z.at(pos)+m_seed.byz),2); - } - - ATH_MSG_VERBOSE( " linear fit on plane xz / slope " << m_seed.axz << "; intercept " << m_seed.bxz); - ATH_MSG_VERBOSE( " linear fit on plane yz / slope " << m_seed.ayz << "; intercept " << m_seed.byz); - ATH_MSG_VERBOSE( " chi2 / on plane xz " << m_seed.chi2_xz << "; on plane yz " << m_seed.chi2_yz); - - vseed.push_back(m_seed); - - } - } - } + ATH_CHECK(make_triplets(vsp1, vseed, "1")); + ATH_CHECK(make_triplets(vsp2, vseed, "2")); SG::WriteHandle<TrackerSeedCollection> seedContainer(m_trackerSeedContainerKey, ctx); ATH_CHECK(seedContainer.record( std::make_unique<TrackerSeedCollection>() ) ); diff --git a/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.h b/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.h index 389e73ac..2e4784a4 100755 --- a/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.h +++ b/Tracker/TrackerRecAlgs/TrackerSeedFinder/src/TrackerSeedFinder.h @@ -61,7 +61,18 @@ namespace Tracker { private: - StatusCode makeTriplets(vector< vector<const Trk::SpacePoint*> >&, unsigned int, string) const; + struct seed { + vector<const Trk::SpacePoint*> vsp; + double axz, bxz, ayz, byz; + double chi2_xz, chi2_yz; + string station; + + void add_sp(const Trk::SpacePoint* sp) { + vsp.push_back(sp); + } + }; + + StatusCode make_triplets(vector< vector<const Trk::SpacePoint*> >&, vector<seed>&, string) const; TrackerSeedFinder() = delete; TrackerSeedFinder(const TrackerSeedFinder&) =delete; @@ -105,16 +116,6 @@ namespace Tracker { ServiceHandle<ITHistSvc> m_thistSvc; mutable int N_1_0=0, N_1_1=0, N_1_2=0, N_2_0=0, N_2_1=0, N_2_2=0, N_3_0=0, N_3_1=0, N_3_2=0; - - struct seed { - vector<const Trk::SpacePoint*> vsp; - double axz, bxz, ayz, byz; - double chi2_xz, chi2_yz; - - void add_sp(const Trk::SpacePoint* sp) { - vsp.push_back(sp); - } - }; }; -- GitLab