GENIEGenerator
Loading...
Searching...
No Matches
gtestResonances.cxx File Reference
#include <string>
#include <TCanvas.h>
#include <TFile.h>
#include <TNtuple.h>
#include <TGraph.h>
#include <TLegend.h>
#include <TH1F.h>
#include <TPad.h>
#include <TPaveLabel.h>
#include "Framework/ParticleData/BaryonResonance.h"
#include "Framework/ParticleData/BaryonResUtils.h"
#include "Framework/Conventions/Constants.h"
#include "Framework/Conventions/Units.h"
#include "Framework/Messenger/Messenger.h"
#include "Framework/Utils/BWFunc.h"
Include dependency graph for gtestResonances.cxx:

Go to the source code of this file.

Functions

int main (int, char **)

Function Documentation

◆ main()

int main ( int ,
char **  )

Definition at line 45 of file gtestResonances.cxx.

46{
47 const int kNResonances = 18;
48
49 const Resonance_t kResonances[kNResonances] = {
56 };
57
58 const int color[kNResonances] = {1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19};
59
60 //-- Graphs to hold baryon resonances Breit Wigner distributions
61 TGraph * grbw[kNResonances];
62
63 //-- Define an output ntuple
64 TNtuple resnt("resnt","baryon resonances","res:W:BW");
65
66 //-- Loop over baryon resonances
67 for(int ires = 0; ires < kNResonances; ires++) {
68
69 //-- Get the current baryon resonance
70 Resonance_t resonance = kResonances[ires];
71
72 LOG("test", pINFO) << "@ Resonance = " << utils::res::AsString(resonance);
73
74 int LR = utils::res::OrbitalAngularMom (resonance);
75 double MR = utils::res::Mass (resonance);
76 double WR = utils::res::Width (resonance);
77 double NR = utils::res::BWNorm (resonance);
78
79 LOG("test", pINFO) << "- mass = " << MR << " GeV";
80 LOG("test", pINFO) << "- width = " << WR << " GeV";
81 LOG("test", pINFO) << "- BW norm = " << NR;
82 LOG("test", pINFO) << "- L = " << LR;
83
84 double bw[50], W[50];
85
86 for(int iW = 0; iW<50; iW++) {
87 W[iW] = 0.01 + iW*(3.5/50.);
88 bw[iW] = utils::bwfunc::BreitWignerL(W[iW],LR,MR,WR,NR);
89 resnt.Fill((float)resonance, W[iW], bw[iW]);
90 LOG("test", pINFO)
91 << " BreitWigner(W = " << W[iW] << " GeV) = " << bw[iW];
92 }
93 grbw[ires] = new TGraph(50, W, bw);
94 }
95
96 //-- Create & format output canvas
97
98 TCanvas * c = new TCanvas("c","",20,20,500,500);
99
100 c->SetBorderMode(0);
101 c->SetFillColor(0);
102 c->Draw();
103
104 TH1F * hframe = (TH1F*) c->DrawFrame(1.0,0.5,3.5,6.0);
105 hframe->Draw();
106 TLegend * legend = new TLegend(0.6,0.2,0.8,0.8);
107
108 for(int ires = 0; ires < kNResonances; ires++) {
109 grbw[ires]->SetLineWidth(2);
110 grbw[ires]->SetLineColor( color[ires] );
111 grbw[ires]->Draw("C");
112 legend->AddEntry(grbw[ires],utils::res::AsString(kResonances[ires]),"L");
113 }
114
115 legend->SetFillColor(0);
116 legend->Draw();
117
118 hframe->GetXaxis()->SetTitle("W (GeV)");
119 hframe->GetYaxis()->SetTitle("Breit Wigner Amplitude");
120 hframe->GetXaxis()->SetTitleOffset(1.3);
121 hframe->GetYaxis()->SetTitleOffset(1.3);
122
123 c->Update();
124
125 TFile f("./genie-resonances.root","recreate");
126 c->Write("plot");
127 resnt.Write();
128 f.Close();
129
130 for(int ires = 0; ires < kNResonances; ires++) {
131 delete grbw[ires];
132 }
133 delete legend;
134 delete c;
135}
#define pINFO
Definition Messenger.h:62
#define LOG(stream, priority)
A macro that returns the requested log4cpp::Category appending a string (using the FILE,...
Definition Messenger.h:96
double BreitWignerL(double W, int L, double mass, double width0, double norm)
Definition BWFunc.cxx:99
double W(const Interaction *const i)
double BWNorm(Resonance_t res, double N0ResMaxNWidths=6, double N2ResMaxNWidths=2, double GnResMaxNWidths=4)
breit-wigner normalization factor
double Width(Resonance_t res)
resonance width (GeV)
double Mass(Resonance_t res)
resonance mass (GeV)
int OrbitalAngularMom(Resonance_t res)
orbital angular momentum
const char * AsString(Resonance_t res)
resonance id -> string
enum genie::EResonance Resonance_t

References genie::utils::res::AsString(), genie::utils::bwfunc::BreitWignerL(), genie::utils::res::BWNorm(), genie::kD13_1520, genie::kD13_1700, genie::kD15_1675, genie::kD33_1700, genie::kF15_1680, genie::kF17_1970, genie::kF35_1905, genie::kF37_1950, genie::kP11_1440, genie::kP11_1710, genie::kP13_1720, genie::kP31_1910, genie::kP33_1232, genie::kP33_1600, genie::kP33_1920, genie::kS11_1535, genie::kS11_1650, genie::kS31_1620, LOG, genie::utils::res::Mass(), genie::utils::res::OrbitalAngularMom(), pINFO, and genie::utils::res::Width().