ANASEN_analysis/sx3cal/EXFit.C
Vignesh Sitaraman 8c2657255c modified: Armory/ClassPW.h
new file:   Armory/SX3Geom.h
	modified:   MakeVertex.C
	renamed:    sx3cal/sx3cal/EXFit.C -> sx3cal/EXFit.C
	renamed:    sx3cal/sx3cal/LRFit.C -> sx3cal/LRFit.C
	renamed:    sx3cal/sx3cal/backgains.dat -> sx3cal/backgains.dat
	renamed:    sx3cal/sx3cal/backgains.dat.unity -> sx3cal/backgains.dat.unity
	renamed:    sx3cal/sx3cal/frontgains.dat -> sx3cal/frontgains.dat
	renamed:    sx3cal/sx3cal/frontgains.dat.unity -> sx3cal/frontgains.dat.unity
	renamed:    sx3cal/sx3cal/rightgains.dat -> sx3cal/rightgains.dat
	renamed:    sx3cal/sx3cal/rightgains.dat.unity -> sx3cal/rightgains.dat.unity
2026-02-19 14:49:49 -05:00

68 lines
2.8 KiB
C
Executable File

{
int index = 3;
TFile *f = new TFile("../results_SX3_run12.root");
TH2F *h2=NULL;
TH1F *h1x=NULL, *h1y=NULL;
//f->cd("evsx");
//f->ls();
double known_xpos[2][2] = {{0,18.75},{-18.75,0}};
std::vector<double> xpos, xposkn; //first = x = known position, second = y = unknown position
std::ofstream ofb(Form("backgains%d.dat",index));
std::ofstream off(Form("frontgains%d.dat",index));
for(int i=1; i<4; i++) {
//do it for pad#2
int backnum=2;
h2 = (TH2F*)(f->Get(Form("evsx/be_vs_x_sx3_id_%d_f%d_b%d",index,i,backnum)));
auto macro = [&]() {
h1x = (TH1F*)(h2->ProjectionX("_px"));
double xleft = h1x->GetBinCenter(h1x->FindFirstBinAbove(h1x->GetMaximum()*0.25));
double xright = h1x->GetBinCenter(h1x->FindLastBinAbove(h1x->GetMaximum()*0.25));
//h1x->GetXaxis()->SetRangeUser(4*xleft, xright*4);
h1x->Draw();
TLine L1(xleft,0,xleft,h1x->GetMaximum()); L1.SetLineColor(kRed); L1.Draw("SAME");
TLine L2(xright,0,xright,h1x->GetMaximum()); L2.SetLineColor(kRed); L2.Draw("SAME");
gPad->Modified();
gPad->Update();
xpos.push_back(xleft); xposkn.push_back(known_xpos[backnum-1][0]);
xpos.push_back(xright); xposkn.push_back(known_xpos[backnum-1][1]);
while(gPad->WaitPrimitive());
h1y = (TH1F*)(h2->ProjectionY("_py"));
double ycenter = h1y->GetBinCenter(h1y->GetMaximumBin());
// std::cout << "front " << i << " back " << backnum << " " << xleft << " " << xright << " " << ycenter << " " << 5486/ycenter << std::endl;
ofb << index <<" front " << i << " back " << backnum << " " << 5486/ycenter << std::endl;
h1y->GetXaxis()->SetRangeUser(ycenter-200,ycenter+200);
h1y->Draw();
TLine L3(ycenter,0,ycenter,h1y->GetMaximum()*1.1); L3.SetLineColor(kRed); L3.Draw("SAME");
gPad->Modified();
gPad->Update();
while(gPad->WaitPrimitive());
};
if(h2)
macro();
//repeat for pad#1
backnum=1;
h2 = (TH2F*)(f->Get(Form("evsx/be_vs_x_sx3_id_%d_f%d_b%d",index,i,backnum)));
if(h2)
macro();
double xtofit[] = {xpos[0],xpos[3]};
double xktofit[] = {xposkn[0],xposkn[3]};
TGraph G1(xpos.size(),xpos.data(),xposkn.data());
G1.Draw("APL*");
G1.Fit("pol1","Q");
off << index<<" lengthcal front " << i << " " << G1.GetFunction("pol1")->GetParameter(0) << " " << G1.GetFunction("pol1")->GetParameter(1) << std::endl;
gPad->Modified(); gPad->Update();
while(gPad->WaitPrimitive());
xpos.clear();
xposkn.clear();
}
ofb.close();
off.close();
f->Close();
}