36 { {900200, 900201, 900202, 900203, 900204},
37 {900300, 900301, 900302, 900303, 900304} }
40 { {910200, 910201, 910202, 910203, 910204},
41 {910300, 910301, 910302, 910303, 910304} }
44 { {920200, 920201, 920202, 920203, 920204},
45 {920300, 920301, 920302, 920303, 920304} }
49 void nuint09_1pi2(
int isample,
int single_pion_sources=0,
int stage=1)
51 cout <<
" ***** running: 1PI.2" << endl;
53 if(isample<0 || isample >=
kNSamples)
return;
54 if(single_pion_sources<0 || single_pion_sources>2)
return;
56 const char * label =
kLabel[isample];
60 TFile fsig(
"./cc1pip_tmp.root",
"read");
61 TGraph * sig_graph_cc1pip = (TGraph*) fsig.Get(
"CC1pip");
65 const int nKEpip = 60;
66 const double KEpipmin = 0.00;
67 const double KEpipmax = 1.50;
71 ostringstream out_filename;
72 out_filename << label;
74 if (single_pion_sources==0) out_filename <<
".1pi_2a.";
75 else if (single_pion_sources==1) out_filename <<
".1pi_2b.";
76 else if (single_pion_sources==2) out_filename <<
".1pi_2c.";
78 if(stage==0) out_filename <<
"no_FSI.";
80 out_filename << label <<
"dsig1pi_dKEpi.data";
82 ofstream out_stream(out_filename.str().c_str(), ios::out);
86 out_stream <<
"# [" << label <<
"]" << endl;
87 out_stream <<
"# " << endl;
88 out_stream <<
"# [1PI.2]:" << endl;
89 out_stream <<
"# 1pi+ cross section at E_nu= 1.0 and 1.5 GeV as a function of the pi+ kinetic energy" << endl;
91 out_stream <<
"# ***** NO FSI: The {X pi+} state is a primary hadronic state" << endl;
93 if(single_pion_sources==0) {
94 out_stream <<
"# 1pi sources: All" << endl;
96 else if(single_pion_sources==1) {
97 out_stream <<
"# 1pi sources: P33(1232) resonance only" << endl;
99 else if(single_pion_sources==2) {
100 out_stream <<
"# 1pi sources: All resonances only" << endl;
102 out_stream <<
"# " << endl;
103 out_stream <<
"# Note:" << endl;
104 out_stream <<
"# - pi+ kinetic energy KE in GeV, linear spacing between KEmin = " << KEpipmin <<
" GeV, KEmax = " << KEpipmax <<
" GeV " << endl;
105 out_stream <<
"# - cross sections in 1E-38 cm^2 / GeV" << endl;
106 out_stream <<
"# - quoted cross section is nuclear cross section divided with number of nucleons A" << endl;
107 out_stream <<
"# Columns:" << endl;
108 out_stream <<
"# | KE(pi+) | dsig(numu A -> mu- 1pi+ X; Enu = 1.0 GeV) | dsig(numu A -> mu- 1pi+ X; Enu = 1.5 GeV) | " << endl;
110 out_stream << std::fixed << setprecision(6);
116 TChain * chain =
new TChain(
"gst");
119 for(
int iwkcur=0; iwkcur<
kNWCur; iwkcur++) {
125 ostringstream filename;
127 filename <<
"../gst/gntp." << run_number <<
".gst.root";
129 cout <<
"Adding " << filename.str() <<
" to event chain" << endl;
130 chain->Add(filename.str().c_str());
138 double sig_cc1pip_1000MeV = sig_graph_cc1pip -> Eval (1.0);
139 double sig_cc1pip_1500MeV = sig_graph_cc1pip -> Eval (1.5);
144 TH1D * hst_dsig_dKEpip_1000MeV =
new TH1D(
"hst_dsig_dKEpip_1000MeV",
"dsig/dKEpi+, numu A -> mu- 1pi+ X, Enu=1.0 GeV", nKEpip, KEpipmin, KEpipmax);
145 TH1D * hst_dsig_dKEpip_1500MeV =
new TH1D(
"hst_dsig_dKEpip_1500MeV",
"dsig/dKEpi+, numu A -> mu- 1pi+ X, Enu=1.5 GeV", nKEpip, KEpipmin, KEpipmax);
151 if(single_pion_sources==0) {
153 chain->Draw(
"(Ef-0.139)>>hst_dsig_dKEpip_1000MeV",
"cc&&Ev>0.99&&Ev<1.01&&pdgf==211&&nfpip==1&&nfpim==0&&nfpi0==0",
"GOFF");
154 chain->Draw(
"(Ef-0.139)>>hst_dsig_dKEpip_1500MeV",
"cc&&Ev>1.49&&Ev<1.51&&pdgf==211&&nfpip==1&&nfpim==0&&nfpi0==0",
"GOFF");
156 else if(single_pion_sources==1) {
158 chain->Draw(
"(Ef-0.139)>>hst_dsig_dKEpip_1000MeV",
"cc&&resid==0&&res&&Ev>0.99&&Ev<1.01&&pdgf==211&&nfpip==1&&nfpim==0&&nfpi0==0",
"GOFF");
159 chain->Draw(
"(Ef-0.139)>>hst_dsig_dKEpip_1500MeV",
"cc&&resid==0&&res&&Ev>1.49&&Ev<1.51&&pdgf==211&&nfpip==1&&nfpim==0&&nfpi0==0",
"GOFF");
161 else if(single_pion_sources==2) {
163 chain->Draw(
"(Ef-0.139)>>hst_dsig_dKEpip_1000MeV",
"cc&&res&&Ev>0.99&&Ev<1.01&&pdgf==211&&nfpip==1&&nfpim==0&&nfpi0==0",
"GOFF");
164 chain->Draw(
"(Ef-0.139)>>hst_dsig_dKEpip_1500MeV",
"cc&&res&&Ev>1.49&&Ev<1.51&&pdgf==211&&nfpip==1&&nfpim==0&&nfpi0==0",
"GOFF");
168 if(single_pion_sources==0) {
170 chain->Draw(
"(Ei-0.139)>>hst_dsig_dKEpip_1000MeV",
"cc&&Ev>0.99&&Ev<1.01&&pdgi==211&&nipip==1&&nipim==0&&nipi0==0",
"GOFF");
171 chain->Draw(
"(Ei-0.139)>>hst_dsig_dKEpip_1500MeV",
"cc&&Ev>1.49&&Ev<1.51&&pdgi==211&&nipip==1&&nipim==0&&nipi0==0",
"GOFF");
173 else if(single_pion_sources==1) {
175 chain->Draw(
"(Ei-0.139)>>hst_dsig_dKEpip_1000MeV",
"cc&&resid==0&&res&&Ev>0.99&&Ev<1.01&&pdgi==211&&nipip==1&&nipim==0&&nipi0==0",
"GOFF");
176 chain->Draw(
"(Ei-0.139)>>hst_dsig_dKEpip_1500MeV",
"cc&&resid==0&&res&&Ev>1.49&&Ev<1.51&&pdgi==211&&nipip==1&&nipim==0&&nipi0==0",
"GOFF");
178 else if(single_pion_sources==2) {
180 chain->Draw(
"(Ei-0.139)>>hst_dsig_dKEpip_1000MeV",
"cc&&res&&Ev>0.99&&Ev<1.01&&pdgi==211&&nipip==1&&nipim==0&&nipi0==0",
"GOFF");
181 chain->Draw(
"(Ei-0.139)>>hst_dsig_dKEpip_1500MeV",
"cc&&res&&Ev>1.49&&Ev<1.51&&pdgi==211&&nipip==1&&nipim==0&&nipi0==0",
"GOFF");
188 double norm_cc1pip_1000MeV = hst_dsig_dKEpip_1000MeV -> Integral(
"width") / sig_cc1pip_1000MeV;
189 double norm_cc1pip_1500MeV = hst_dsig_dKEpip_1500MeV -> Integral(
"width") / sig_cc1pip_1500MeV;
191 if (norm_cc1pip_1000MeV > 0) hst_dsig_dKEpip_1000MeV -> Scale(1./norm_cc1pip_1000MeV);
192 if (norm_cc1pip_1500MeV > 0) hst_dsig_dKEpip_1500MeV -> Scale(1./norm_cc1pip_1500MeV);
194 for(
int i=1;
i <= hst_dsig_dKEpip_1000MeV->GetNbinsX();
i++) {
196 double KEpip = hst_dsig_dKEpip_1000MeV -> GetBinCenter(
i);
198 double dsig_dKEpip_1000MeV = hst_dsig_dKEpip_1000MeV -> GetBinContent(
i);
199 double dsig_dKEpip_1500MeV = hst_dsig_dKEpip_1500MeV -> GetBinContent(
i);
201 dsig_dKEpip_1000MeV = TMath::Max(0., dsig_dKEpip_1000MeV);
202 dsig_dKEpip_1500MeV = TMath::Max(0., dsig_dKEpip_1500MeV);
204 out_stream << setw(15) << KEpip
205 << setw(15) << dsig_dKEpip_1000MeV
206 << setw(15) << dsig_dKEpip_1500MeV
const char * kLabel[kNSamples]
const int kRunNu1PI2[kNSamples][kNWCur][kNEnergies][kNRunsPerCase]
the ParameterSet object passed in for the configuration of a destination should be the only source that can affect the behavior of that destination This is to eliminate the dependencies of configuring a destination from multiple mostly from the defaults It suppresses possible glitches about changing the configuration file somewhere outside of a destination segament might still affect the behavior of that destination In the previous configuration for a specific the value of a certain e may come from following and have been suppressed It the configuring ParameterSet object for each destination will be required to carry a parameter list as complete as possible If a parameter still cannot be found in the ParameterSet the configuration code will go look for a hardwired default directly The model is a great simplicity comparing with the previous especially when looking for default values Another great advantage is most of the parameters now have very limited places that allows to appear Usually they can only appear at one certain level in a configuration file For in the old configuring model or in a default ParameterSet object inside of a or in a category or in a severity object This layout of multiple sources for a single parameter brings great confusion in both writing a configuration and in processing the configuration file Under the new the only allowed place for the parameter limit to appear is inside of a category which is inside of a destination object Other improvements simplify the meaning of a destination name In the old a destination name has multiple folds of meanings the e cout and cerr have the special meaning of logging messages to standard output or standard error the name also serves as the output filename if the destination is a file these names are also references to look up for detailed configurations in configuring the MessageFacility The multi purpose of the destination name might cause some unwanted behavior in either writing or parsing the configuration file To amend in the new model the destination name is now merely a name for a which might represent the literal purpose of this or just an id All other meanings of the destinations names now go into the destination ParameterSet as individual such as the type parameter and filename parameter Following is the deatiled rule for the new configuring Everything that is related with MessageFacility configuration must be wrapped in a single ParameterSet object with the name MessageFacility The MessageFacility ParameterSet object contains a series of top level parameters These parameters can be chosen a vector of string listing the name of debug enabled models Or use *to enable debug messages in all modules a vector of string a vector of string a vector of string a ParameterSet object containing the list of all destinations The destinations ParameterSet object is a combination of ParameterSet objects for individual destinations There are two types of destinations that you can insert in the destinations ParameterSet ordinary including cout
void nuint09_1pi2(int isample, int single_pion_sources=0, int stage=1)