From 9dbc82118359083595ae372fdfedcbeef88751d3 Mon Sep 17 00:00:00 2001 From: Charlie Paxman <cp00474@surrey.ac.uk> Date: Fri, 4 Jun 2021 15:33:37 +0100 Subject: [PATCH] * minor correction * Thickness wasn't being properly varied --- .../e793s/macro/BeamSpot/MinimizeBeamSpot.cxx | 45 +++++++++---------- .../e793s/macro/BeamSpot/MinimizeBeamSpot.h | 2 +- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.cxx b/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.cxx index fbcb63d4b..26d119ac7 100755 --- a/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.cxx +++ b/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.cxx @@ -58,7 +58,6 @@ double devE(const double* parameter){ double ThetaMugast = dir.Angle(MugastNormal); double Energy = energy[i]; - //NOTE!!! Not calucualting energy loss in Al??? //Energy loss in Al Energy=Al.EvaluateInitialEnergy( Energy, //energy after Al @@ -67,16 +66,14 @@ double devE(const double* parameter){ //Energy loss in target Energy=CD2.EvaluateInitialEnergy( Energy, //energy after leaving target - 0.5*parameter[4]*micrometer, //pass through half target + 0.5*parameter[3]*micrometer, //pass through half target ThetaTarget); //angle leaving target //Final value of Ex double Ex = reaction.ReconstructRelativistic(Energy,ThetaTarget); - //Fill histogram with ERROR in Ex! - //h->Fill(Ex-refE); - h->Fill(Ex); - + //Fill histograms with Ex + h->Fill(Ex); switch(detnum[i]){ case 1: h1->Fill(Ex); @@ -97,30 +94,28 @@ double devE(const double* parameter){ h7->Fill(Ex); break; default: - cout << "ERRO:: Invalid DetNum " << detnum[i] << " at event " << i << endl; + cout << "ERROR:: Invalid DetNum " << detnum[i] << " at event " << i << endl; return 1; // Exit code } - } //End loop over events //Write vals to screen cout << "Mean: " << h->GetMean() << "\t StdDev: " << h->GetStdDev() - << "\t Thickness??: " << parameter[4] + << "\t Thickness: " << parameter[3] << " um" << endl; //Draw histogram(s) h->Draw(); if(flagDraw){ InitiliseCanvas(); } - + /* cout << pow(h->GetMean()-refE,2) << " + " << pow(0.1*h->GetStdDev(),2) << " = " << pow(h->GetMean()-refE,2) + pow(0.1*h->GetStdDev(),2) << endl; - - + */ //Adapt the metric as needed return sqrt( pow(h->GetMean()-refE,2) + pow(0.1*h->GetStdDev(),2) ); @@ -128,47 +123,47 @@ double devE(const double* parameter){ //////////////////////////////////////////////////////////////////////////////// void MinimizeBeamSpot(){ - // Read data in + //Read data in LoadFile(); - // Start with beam (0,0,0) and 4.7um 0.5mg/c2 target - double parameter[4] = {0.0, 0.0, 0.0, 4.7}; + //Start with beam (0,0,0) and 4.76um 0.5mg/c2 target + double parameter[4] = {0.0, 0.0, 0.0, 4.76}; devE(parameter); - // Function with 4 parameter XYZ and Target thickness + //Function with 4 parameter XYZ and Target thickness auto func = ROOT::Math::Functor(&devE,4); - // Minimizer + //Minimizer auto minim = ROOT::Math::Factory::CreateMinimizer("Minuit2","Migrad"); minim->SetPrintLevel(0); minim->SetPrecision(1e-10); - // Set minimizer function + //Set minimizer function minim->SetFunction(func); - // Assign variable limits + //Assign variable limits minim->SetLimitedVariable(0,"X",parameter[0],0.01,-10,10); minim->SetLimitedVariable(1,"Y",parameter[1],0.01,-10,10); minim->SetLimitedVariable(2,"Z",parameter[2],0.01,-5,5); - minim->SetLimitedVariable(3,"T",parameter[3],0.01, 4.7-3.0, 4.7+3.0); + minim->SetLimitedVariable(3,"T",parameter[3],0.01,4.76*0.5,4.76*1.5); - // Don't draw iterations of minimizer + //Don't draw iterations of minimizer flagDraw = 0; - // Shrink it, babeyyy + //Shrink it, babeyyy minim->Minimize(); - // Draw minimal value + //Draw minimal value flagDraw = 1; - // Pull values from minimizer + //Pull values from minimizer const double* x = minim->X(); cout << "========================================" << endl; cout << "\t\tX =" << x[0] << endl; cout << "\t\tY =" << x[1] << endl; cout << "\t\tZ =" << x[2] << endl; cout << "\t\tT =" << x[3] << endl; - cout << "Minimum: " << devE(x) << endl; + devE(x); cout << "========================================" << endl; } diff --git a/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.h b/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.h index fda506ebb..599440655 100755 --- a/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.h +++ b/Projects/e793s/macro/BeamSpot/MinimizeBeamSpot.h @@ -14,7 +14,7 @@ NPL::EnergyLoss Al("proton_Al.G4table","G4Table",100); using namespace std; bool flagDraw = 0; -static auto h = new TH1D("h","All MG#'s", 80,-1.,1.); +static auto h = new TH1D("h","All MG#'s", 60,-1.,1.); static auto h1 = new TH1D("h1","Individual MG#'s", 40,-1.,1.); static auto h2 = new TH1D("h2","h2", 40,-1.,1.); static auto h3 = new TH1D("h3","h3", 40,-1.,1.); -- GitLab