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