Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
fcal_invmass.C
Go to the documentation of this file.
1 // hnamepath: /FCAL_invmass/InvMass1
2 // hnamepath: /FCAL_invmass/InvMass2
3 // hnamepath: /FCAL_invmass/InvMass3
4 // hnamepath: /FCAL_invmass/InvMass4
5 // hnamepath: /FCAL_invmass/InvMass5
6 // hnamepath: /FCAL_invmass/InvMass6
7 // hnamepath: /FCAL_invmass/InvMass7
8 // hnamepath: /FCAL_invmass/InvMass8
9 // hnamepath: /FCAL_invmass/InvMass9
10 
11 
12 void fitHisto(TH1I* histo){
13 
14  float par_1[12];
15  Double_t par[12] = {};
16  TF1 *g1 = new TF1("g1","gaus",0.06,0.09);
17  TF1 *g2 = new TF1("g2","gaus",0.09,0.15);
18  TF1 *g3 = new TF1("g3","pol2",0.15,0.28);
19 
20  TF1 *total = new TF1("total","gaus(0)+gaus(3)+pol3(6)",0.06,0.2);
21  total->SetLineColor(kRed);
22  histo->Fit(g1,"nR");
23  histo->Fit(g2,"nR+");
24  histo->Fit(g3,"nR+");
25  g1->GetParameters(&par[0]);
26  g2->GetParameters(&par[3]);
27  g3->GetParameters(&par[6]);
28  total->SetParameters(par);
29 
30  total->SetParName(3, "Amplitude");
31  total->SetParName(4, "Pi0 Mass");
32  total->SetParName(5, "Pi0 Width");
33 
34  histo->Fit(total,"R+");
35 
36  for (int i=0; i<12; i++) {
37  par_1[i] = total->GetParameter(i);
38  }
39 
40  TPaveText *pt_300 = new TPaveText(0.6, 0.65, 0.99, 0.89, "NDC");
41  pt_300->SetFillColor(0);
42  pt_300->AddText(Form("M_{#pi^{0}} = %.3f MeV",par_1[4]*1000));
43  pt_300->AddText(Form("#sigma_{#pi^{0}} = %.3f MeV",par_1[5]*1000));
44  pt_300->AddText(Form("#sigma/M = %.3f %%",(par_1[5]/par_1[4])*100));
45  pt_300->Draw();
46 
47 }
48 
49 void fcal_invmass(){
50 
51 
52  TDirectory *dir = (TDirectory*)gDirectory->FindObjectAny("FCAL_invmass");
53  if(dir) dir->cd();
54 
55  TH1I* InvMass1 = (TH1I*)gDirectory->FindObjectAny("InvMass1");
56  TH1I* InvMass2 = (TH1I*)gDirectory->FindObjectAny("InvMass2");
57  TH1I* InvMass3 = (TH1I*)gDirectory->FindObjectAny("InvMass3");
58  TH1I* InvMass4 = (TH1I*)gDirectory->FindObjectAny("InvMass4");
59  TH1I* InvMass5 = (TH1I*)gDirectory->FindObjectAny("InvMass5");
60  TH1I* InvMass6 = (TH1I*)gDirectory->FindObjectAny("InvMass6");
61  TH1I* InvMass7 = (TH1I*)gDirectory->FindObjectAny("InvMass7");
62  TH1I* InvMass8 = (TH1I*)gDirectory->FindObjectAny("InvMass8");
63  TH1I* InvMass9 = (TH1I*)gDirectory->FindObjectAny("InvMass9");
64  TH1I* qualCut_00 = (TH1I*)gDirectory->FindObjectAny("qualCut_00");
65  TH1I* qualCut_03 = (TH1I*)gDirectory->FindObjectAny("qualCut_03");
66  TH1I* qualCut_05 = (TH1I*)gDirectory->FindObjectAny("qualCut_05");
67 
68 
69  if(gPad == NULL){
70 
71  TCanvas *c1 = new TCanvas( "c1", "FCAL_invmass_plot", 1200, 1200 );
72  c1->cd(0);
73  c1->Draw();
74  c1->Update();
75  }
76 
77  if( !gPad ) return;
78  TCanvas* c1 = gPad->GetCanvas();
79  c1->Divide(4,3);
80 
81  if( qualCut_00 ){
82 
83  qualCut_00->SetStats(0);
84  c1->cd(10);
85  qualCut_00->Draw();
86  qualCut_00->SetLineWidth(2);
87  fitHisto(qualCut_00);
88  }
89  if( qualCut_03 ){
90 
91  qualCut_03->SetStats(0);
92  c1->cd(11);
93  qualCut_03->Draw();
94  qualCut_03->SetLineWidth(2);
95  fitHisto(qualCut_03);
96  }
97 
98 
99  if( qualCut_05 ){
100 
101  qualCut_05->SetStats(0);
102  c1->cd(12);
103  qualCut_05->Draw();
104  qualCut_05->SetLineWidth(2);
105  fitHisto(qualCut_05);
106  }
107  if( InvMass1 ){
108 
109  InvMass1->SetStats(0);
110  c1->cd(1);
111  InvMass1->Draw();
112  InvMass1->SetLineWidth(2);
113  fitHisto(InvMass1);
114  }
115 
116  if( InvMass2 ){
117 
118  InvMass2->SetStats(0);
119  c1->cd(2);
120  InvMass2->Draw();
121  InvMass2->SetLineWidth(2);
122  fitHisto(InvMass2);
123  }
124 
125  if( InvMass3 ){
126 
127  InvMass3->SetStats(0);
128  c1->cd(3);
129  InvMass3->Draw();
130  InvMass3->SetLineWidth(2);
131  fitHisto(InvMass3);
132  }
133 
134  if( InvMass4 ){
135 
136  InvMass4->SetStats(0);
137  c1->cd(4);
138  InvMass4->Draw();
139  InvMass4->SetLineWidth(2);
140  fitHisto(InvMass4);
141  }
142 
143  if( InvMass5 ){
144 
145  InvMass5->SetStats(0);
146  c1->cd(5);
147  InvMass5->Draw();
148  InvMass5->SetLineWidth(2);
149  fitHisto(InvMass5);
150  }
151 
152  if( InvMass6 ){
153 
154  InvMass6->SetStats(0);
155  c1->cd(6);
156  InvMass6->Draw();
157  InvMass6->SetLineWidth(2);
158  fitHisto(InvMass6);
159  }
160 
161  if( InvMass7 ){
162 
163  InvMass7->SetStats(0);
164  c1->cd(7);
165  InvMass7->Draw();
166  InvMass7->SetLineWidth(2);
167  fitHisto(InvMass7);
168  }
169 
170  if( InvMass8 ){
171 
172  InvMass8->SetStats(0);
173  c1->cd(8);
174  InvMass8->Draw();
175  InvMass8->SetLineWidth(2);
176  fitHisto(InvMass8);
177  }
178 
179  if( InvMass9 ){
180 
181  InvMass9->SetStats(0);
182  c1->cd(9);
183  InvMass9->Draw();
184  InvMass9->SetLineWidth(2);
185  fitHisto(InvMass9);
186  }
187 }
static TH1I * InvMass5
static TH1I * InvMass4
static TH1I * qualCut_00
double total
Definition: FitGains.C:151
static TH1F * InvMass1
static TH1I * InvMass6
static TH1I * InvMass3
static TH1F * InvMass2
Double_t c1[2][NMODULES]
Definition: tw_corr.C:68
static TH1I * qualCut_03
void fcal_invmass()
Definition: fcal_invmass.C:49
static TH1I * InvMass9
void fitHisto(TH1I *histo)
Definition: fcal_invmass.C:12
TDirectory * dir
Definition: bcal_hist_eff.C:31
static TH1I * InvMass7
static TH1I * InvMass8
static TH1I * qualCut_05