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
68 lines
2.8 KiB
C
Executable File
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();
|
|
}
|