From 0c145f109acb7e855c5a43a2e9856ccf188502b5 Mon Sep 17 00:00:00 2001
From: Christof Kraus <christof.j.kraus@gmail.com>
Date: Fri, 17 Jul 2020 00:22:30 +0200
Subject: [PATCH] don't initialize the cavity again instead just request the
 dimensions

---
 src/Algorithms/CavityAutophaser.cpp | 25 +++++++++++--------------
 src/Algorithms/CavityAutophaser.h   |  4 +---
 2 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/src/Algorithms/CavityAutophaser.cpp b/src/Algorithms/CavityAutophaser.cpp
index 4c791f714..a73c317d5 100644
--- a/src/Algorithms/CavityAutophaser.cpp
+++ b/src/Algorithms/CavityAutophaser.cpp
@@ -19,8 +19,7 @@ CavityAutophaser::CavityAutophaser(const PartData &ref,
     itsCavity_m(cavity)
 {
     double zbegin = 0.0, zend = 0.0;
-    PartBunchBase<double, 3> *fakeBunch = NULL;
-    cavity->initialise(fakeBunch, zbegin, zend);
+    cavity->getDimensions(zbegin, zend);
     initialR_m = Vector_t(0, 0, zbegin);
 }
 
@@ -138,10 +137,10 @@ double CavityAutophaser::getPhaseAtMaxEnergy(const Vector_t &R,
                 itsCavity_m->getName() + "_AP.dat"
             });
             std::ofstream out(fname);
-            track(initialR_m, initialP_m, t + tErr, dt, newPhase, &out);
+            track(t + tErr, dt, newPhase, &out);
             out.close();
         } else {
-            track(initialR_m, initialP_m, t + tErr, dt, newPhase, NULL);
+            track(t + tErr, dt, newPhase, NULL);
         }
 
         INFOMSG(level1 << std::fixed << std::setprecision(4)
@@ -209,7 +208,7 @@ std::pair<double, double> CavityAutophaser::optimizeCavityPhase(double initialPh
     if (element->getAutophaseVeto()) {
         double basePhase = std::fmod(element->getFrequencym() * t, Physics::two_pi);
         double phase = std::fmod(originalPhase - basePhase + Physics::two_pi, Physics::two_pi);
-        double E = track(initialR_m, initialP_m, t, dt, phase);
+        double E = track(t, dt, phase);
         std::pair<double, double> status(originalPhase, E);//-basePhase, E);
         return status;
     }
@@ -220,7 +219,7 @@ std::pair<double, double> CavityAutophaser::optimizeCavityPhase(double initialPh
     const int numRefinements = Options::autoPhase;
 
     int j = -1;
-    double E = track(initialR_m, initialP_m, t, dt, phi);
+    double E = track(t, dt, phi);
     double Emax = E;
 
     do {
@@ -228,7 +227,7 @@ std::pair<double, double> CavityAutophaser::optimizeCavityPhase(double initialPh
         Emax = E;
         initialPhase = phi;
         phi -= dphi;
-        E = track(initialR_m, initialP_m, t, dt, phi);
+        E = track(t, dt, phi);
     } while(E > Emax);
 
     if(j == 0) {
@@ -240,20 +239,20 @@ std::pair<double, double> CavityAutophaser::optimizeCavityPhase(double initialPh
             Emax = E;
             initialPhase = phi;
             phi += dphi;
-            E = track(initialR_m, initialP_m, t, dt, phi);
+            E = track(t, dt, phi);
         } while(E > Emax);
     }
 
     for(int rl = 0; rl < numRefinements; ++ rl) {
         dphi /= 2.;
         phi = initialPhase - dphi;
-        E = track(initialR_m, initialP_m, t, dt, phi);
+        E = track(t, dt, phi);
         if(E > Emax) {
             initialPhase = phi;
             Emax = E;
         } else {
             phi = initialPhase + dphi;
-            E = track(initialR_m, initialP_m, t, dt, phi);
+            E = track(t, dt, phi);
             if(E > Emax) {
                 initialPhase = phi;
                 Emax = E;
@@ -262,15 +261,13 @@ std::pair<double, double> CavityAutophaser::optimizeCavityPhase(double initialPh
     }
     Phimax = std::fmod(initialPhase + Physics::two_pi, Physics::two_pi);
 
-    E = track(initialR_m, initialP_m, t, dt, Phimax + originalPhase);
+    E = track(t, dt, Phimax + originalPhase);
     std::pair<double, double> status(Phimax, E);
 
     return status;
 }
 
-double CavityAutophaser::track(Vector_t /*R*/,
-                               Vector_t /*P*/,
-                               double t,
+double CavityAutophaser::track(double t,
                                const double dt,
                                const double phase,
                                std::ofstream *out) const {
diff --git a/src/Algorithms/CavityAutophaser.h b/src/Algorithms/CavityAutophaser.h
index a4e49c8da..7d40c5747 100644
--- a/src/Algorithms/CavityAutophaser.h
+++ b/src/Algorithms/CavityAutophaser.h
@@ -22,9 +22,7 @@ private:
                                                   double t,
                                                   double dt);
 
-    double track(Vector_t R,
-                 Vector_t P,
-                 double t,
+    double track(double t,
                  const double dt,
                  const double phase,
                  std::ofstream *out = NULL) const;
-- 
GitLab