306 const double e_h = 1.3;
312 int brFSPrimLept = 0;
318 bool brFromSea =
false;
320 bool brIsQel =
false;
321 bool brIsRes =
false;
322 bool brIsDis =
false;
323 bool brIsCoh =
false;
324 bool brIsMec =
false;
325 bool brIsDfr =
false;
326 bool brIsImd =
false;
327 bool brIsNrm =
false;
328 bool brIsSingleK =
false;
329 bool brIsImdAnh =
false;
330 bool brIsNuEL =
false;
334 bool brIsCharmPro =
false;
335 bool brIsAMNuGamma =
false;
336 bool brIsHNL =
false;
338 int brCodeNuance = 0;
343 double brKineQ2s = 0;
421 TTree * s_tree =
new TTree(
"gst",
"GENIE Summary Event Tree");
425 s_tree->Branch(
"iev", &brIev,
"iev/I" );
426 s_tree->Branch(
"neu", &brNeutrino,
"neu/I" );
427 s_tree->Branch(
"fspl", &brFSPrimLept,
"fspl/I" );
428 s_tree->Branch(
"tgt", &brTarget,
"tgt/I" );
429 s_tree->Branch(
"Z", &brTargetZ,
"Z/I" );
430 s_tree->Branch(
"A", &brTargetA,
"A/I" );
431 s_tree->Branch(
"hitnuc", &brHitNuc,
"hitnuc/I" );
432 s_tree->Branch(
"hitqrk", &brHitQrk,
"hitqrk/I" );
433 s_tree->Branch(
"resid", &brResId,
"resid/I" );
434 s_tree->Branch(
"sea", &brFromSea,
"sea/O" );
435 s_tree->Branch(
"qel", &brIsQel,
"qel/O" );
436 s_tree->Branch(
"mec", &brIsMec,
"mec/O" );
437 s_tree->Branch(
"res", &brIsRes,
"res/O" );
438 s_tree->Branch(
"dis", &brIsDis,
"dis/O" );
439 s_tree->Branch(
"coh", &brIsCoh,
"coh/O" );
440 s_tree->Branch(
"dfr", &brIsDfr,
"dfr/O" );
441 s_tree->Branch(
"imd", &brIsImd,
"imd/O" );
442 s_tree->Branch(
"norm", &brIsNrm,
"norm/O" );
443 s_tree->Branch(
"imdanh", &brIsImdAnh,
"imdanh/O" );
444 s_tree->Branch(
"singlek", &brIsSingleK,
"singlek/O" );
445 s_tree->Branch(
"nuel", &brIsNuEL,
"nuel/O" );
446 s_tree->Branch(
"em", &brIsEM,
"em/O" );
447 s_tree->Branch(
"cc", &brIsCC,
"cc/O" );
448 s_tree->Branch(
"nc", &brIsNC,
"nc/O" );
449 s_tree->Branch(
"charm", &brIsCharmPro,
"charm/O" );
450 s_tree->Branch(
"amnugamma", &brIsAMNuGamma,
"amnugamma/O" );
451 s_tree->Branch(
"hnl", &brIsHNL,
"hnl/O" );
452 s_tree->Branch(
"neut_code", &brCodeNeut,
"neut_code/I" );
453 s_tree->Branch(
"nuance_code", &brCodeNuance,
"nuance_code/I" );
454 s_tree->Branch(
"wght", &brWeight,
"wght/D" );
455 s_tree->Branch(
"xs", &brKineXs,
"xs/D" );
456 s_tree->Branch(
"ys", &brKineYs,
"ys/D" );
457 s_tree->Branch(
"ts", &brKineTs,
"ts/D" );
458 s_tree->Branch(
"Q2s", &brKineQ2s,
"Q2s/D" );
459 s_tree->Branch(
"Ws", &brKineWs,
"Ws/D" );
460 s_tree->Branch(
"x", &brKineX,
"x/D" );
461 s_tree->Branch(
"y", &brKineY,
"y/D" );
462 s_tree->Branch(
"t", &brKineT,
"t/D" );
463 s_tree->Branch(
"Q2", &brKineQ2,
"Q2/D" );
464 s_tree->Branch(
"W", &brKineW,
"W/D" );
465 s_tree->Branch(
"EvRF", &brEvRF,
"EvRF/D" );
466 s_tree->Branch(
"Ev", &brEv,
"Ev/D" );
467 s_tree->Branch(
"pxv", &brPxv,
"pxv/D" );
468 s_tree->Branch(
"pyv", &brPyv,
"pyv/D" );
469 s_tree->Branch(
"pzv", &brPzv,
"pzv/D" );
470 s_tree->Branch(
"En", &brEn,
"En/D" );
471 s_tree->Branch(
"pxn", &brPxn,
"pxn/D" );
472 s_tree->Branch(
"pyn", &brPyn,
"pyn/D" );
473 s_tree->Branch(
"pzn", &brPzn,
"pzn/D" );
474 s_tree->Branch(
"El", &brEl,
"El/D" );
475 s_tree->Branch(
"pxl", &brPxl,
"pxl/D" );
476 s_tree->Branch(
"pyl", &brPyl,
"pyl/D" );
477 s_tree->Branch(
"pzl", &brPzl,
"pzl/D" );
478 s_tree->Branch(
"pl", &brPl,
"pl/D" );
479 s_tree->Branch(
"cthl", &brCosthl,
"cthl/D" );
480 s_tree->Branch(
"nfp", &brNfP,
"nfp/I" );
481 s_tree->Branch(
"nfn", &brNfN,
"nfn/I" );
482 s_tree->Branch(
"nfpip", &brNfPip,
"nfpip/I" );
483 s_tree->Branch(
"nfpim", &brNfPim,
"nfpim/I" );
484 s_tree->Branch(
"nfpi0", &brNfPi0,
"nfpi0/I" );
485 s_tree->Branch(
"nfkp", &brNfKp,
"nfkp/I" );
486 s_tree->Branch(
"nfkm", &brNfKm,
"nfkm/I" );
487 s_tree->Branch(
"nfk0", &brNfK0,
"nfk0/I" );
488 s_tree->Branch(
"nfem", &brNfEM,
"nfem/I" );
489 s_tree->Branch(
"nfother", &brNfOther,
"nfother/I" );
490 s_tree->Branch(
"nip", &brNiP,
"nip/I" );
491 s_tree->Branch(
"nin", &brNiN,
"nin/I" );
492 s_tree->Branch(
"nipip", &brNiPip,
"nipip/I" );
493 s_tree->Branch(
"nipim", &brNiPim,
"nipim/I" );
494 s_tree->Branch(
"nipi0", &brNiPi0,
"nipi0/I" );
495 s_tree->Branch(
"nikp", &brNiKp,
"nikp/I" );
496 s_tree->Branch(
"nikm", &brNiKm,
"nikm/I" );
497 s_tree->Branch(
"nik0", &brNiK0,
"nik0/I" );
498 s_tree->Branch(
"niem", &brNiEM,
"niem/I" );
499 s_tree->Branch(
"niother", &brNiOther,
"niother/I" );
500 s_tree->Branch(
"ni", &brNi,
"ni/I" );
501 s_tree->Branch(
"pdgi", brPdgi,
"pdgi[ni]/I" );
502 s_tree->Branch(
"resc", brResc,
"resc[ni]/I" );
503 s_tree->Branch(
"Ei", brEi,
"Ei[ni]/D" );
504 s_tree->Branch(
"pxi", brPxi,
"pxi[ni]/D" );
505 s_tree->Branch(
"pyi", brPyi,
"pyi[ni]/D" );
506 s_tree->Branch(
"pzi", brPzi,
"pzi[ni]/D" );
507 s_tree->Branch(
"nf", &brNf,
"nf/I" );
508 s_tree->Branch(
"pdgf", brPdgf,
"pdgf[nf]/I" );
509 s_tree->Branch(
"Ef", brEf,
"Ef[nf]/D" );
510 s_tree->Branch(
"pxf", brPxf,
"pxf[nf]/D" );
511 s_tree->Branch(
"pyf", brPyf,
"pyf[nf]/D" );
512 s_tree->Branch(
"pzf", brPzf,
"pzf[nf]/D" );
513 s_tree->Branch(
"pf", brPf,
"pf[nf]/D" );
514 s_tree->Branch(
"cthf", brCosthf,
"cthf[nf]/D" );
515 s_tree->Branch(
"vtxx", &brVtxX,
"vtxx/D" );
516 s_tree->Branch(
"vtxy", &brVtxY,
"vtxy/D" );
517 s_tree->Branch(
"vtxz", &brVtxZ,
"vtxz/D" );
518 s_tree->Branch(
"vtxt", &brVtxT,
"vtxt/D" );
519 s_tree->Branch(
"sumKEf", &brSumKEf,
"sumKEf/D" );
520 s_tree->Branch(
"calresp0", &brCalResp0,
"calresp0/D" );
521 s_tree->Branch(
"XSec", &brXSec,
"XSec/D" );
522 s_tree->Branch(
"DXSec", &brDXSec,
"DXSec/D" );
523 s_tree->Branch(
"KPS", &brKPS,
"KPS/i" );
529 er_tree =
dynamic_cast <TTree *
> ( fin.Get(
"gtree") );
532 LOG(
"gntpc",
pERROR) <<
"Null input GHEP event tree";
535 LOG(
"gntpc",
pINFO) <<
"Input tree header: " << *thdr;
539 er_tree->SetBranchAddress(
"gmcrec", &mcrec);
541 LOG(
"gntpc",
pERROR) <<
"Null MC record";
546 Long64_t nmax = (
gOptN<0) ?
547 er_tree->GetEntries() : TMath::Min( er_tree->GetEntries(),
gOptN );
549 LOG(
"gntpc",
pERROR) <<
"Number of events = 0";
553 LOG(
"gntpc",
pNOTICE) <<
"*** Analyzing: " << nmax <<
" events";
555 TLorentzVector pdummy(0,0,0,0);
558 for(Long64_t iev = 0; iev < nmax; iev++) {
559 er_tree->GetEntry(iev);
568 bool is_unphysical =
event.IsUnphysical();
570 LOG(
"gntpc",
pINFO) <<
"Skipping unphysical event";
577 for(
int j=0; j<
kNPmax; j++) {
603 if( neutrino ) {
LOG(
"gntpc",
pDEBUG) <<
"neutrino p4 = ( "
604 << neutrino->
GetP4()->E() <<
", "
605 << neutrino->
GetP4()->Px() <<
", "
606 << neutrino->
GetP4()->Py() <<
", "
607 << neutrino->
GetP4()->Pz() <<
" )"; }
608 if( target ) {
LOG(
"gntpc",
pDEBUG) <<
"target p4 = ( "
609 << target->
GetP4()->E() <<
", "
610 << target->
GetP4()->Px() <<
", "
611 << target->
GetP4()->Py() <<
", "
612 << target->
GetP4()->Pz() <<
" )"; }
613 if( fsl ) {
LOG(
"gntpc",
pDEBUG) <<
"fsl p4 = ( "
614 << fsl->
GetP4()->E() <<
", "
615 << fsl->
GetP4()->Px() <<
", "
616 << fsl->
GetP4()->Py() <<
", "
617 << fsl->
GetP4()->Pz() <<
" )"; }
619 if( hitnucl ) {
LOG(
"gntpc",
pDEBUG) <<
"hitnucl p4 = ( "
620 << hitnucl->
GetP4()->E() <<
", "
621 << hitnucl->
GetP4()->Px() <<
", "
622 << hitnucl->
GetP4()->Py() <<
", "
623 << hitnucl->
GetP4()->Pz() <<
" )"; }
643 TLorentzVector * vtx =
event.Vertex();
656 bool is_em = proc_info.
IsEM();
657 bool is_weakcc = proc_info.
IsWeakCC();
658 bool is_weaknc = proc_info.
IsWeakNC();
659 bool is_mec = proc_info.
IsMEC();
662 bool is_norm = proc_info.
IsNorm();
664 if (!hitnucl && neutrino) {
665 assert(is_coh || is_imd || is_imdanh || is_nuel | is_amnugamma || is_coh_el || is_hnl || is_norm);
669 int qrk = (is_dis) ? tgt.
HitQrkPdg() : 0;
670 bool seaq = (is_dis) ? tgt.
HitSeaQrk() :
false;
684 double weight =
event.Weight();
690 bool get_selected =
true;
691 double xs = kine.
x (get_selected);
692 double ys = kine.
y (get_selected);
693 double ts = (is_coh || is_dfr || is_hnl) ? kine.
t (get_selected) : -1;
694 double Q2s = kine.
Q2(get_selected);
695 double Ws = kine.
W (get_selected);
698 <<
"[Select] Q2 = " << Q2s <<
", W = " << Ws
699 <<
", x = " << xs <<
", y = " << ys <<
", t = " << ts;
705 const TLorentzVector & k1 = (neutrino) ? *(neutrino->
P4()) : pdummy;
706 const TLorentzVector & k2 = (fsl) ? *(fsl->
P4()) : pdummy;
707 const TLorentzVector & p1 = (hitnucl) ? *(hitnucl->
P4()) : pdummy;
710 TLorentzVector q = k1-k2;
711 double Q2 = -1 * q.M2();
713 double v = (hitnucl) ? q.Energy() : -1;
717 x = (hitnucl) ? 0.5*Q2/(M*v) : -1;
718 y = (hitnucl) ? v/k1.Energy() : -1;
720 W2 = (hitnucl) ? M*M + 2*M*v - Q2 : -1;
721 W = (hitnucl) ? TMath::Sqrt(W2) : -1;
722 }
else if( is_hnl ) {
728 <<
"Here is k1 = ( " << k1.E() <<
", " << k1.Px() <<
", " << k1.Py() <<
", " << k1.Pz() <<
" )";
738 W2 = M*M + 2*M*v - Q2;
743 double t = (is_coh || is_dfr || is_hnl) ? kine.
t (get_selected) : -1;
746 TLorentzVector k1_rf = k1;
748 k1_rf.Boost(-1.*p1.BoostVector());
760 <<
"[Calc] Q2 = " << Q2 <<
", W = " << W
761 <<
", x = " << x <<
", y = " << y <<
", t = " << t;
767 bool study_hadsyst = (is_qel || is_res || is_dis || is_coh || is_dfr || is_mec || is_singlek || is_hnl);
770 TObjArrayIter piter(&event);
779 LOG(
"gntpc",
pDEBUG) <<
"Extracting final state hadronic system";
781 vector<int> final_had_syst;
782 while( (p = (
GHepParticle *) piter.Next()) && study_hadsyst)
787 if(!is_hnl && event.Particle(ip)->FirstMother()==0)
continue;
788 if(is_hnl && event.Particle(0)->FirstDaughter()==ip)
continue;
796 final_had_syst.push_back(ip);
799 final_had_syst.push_back(ip);
811 LOG(
"gntpc",
pDEBUG ) <<
"Adding pdg code " << ip <<
" to FS hadronic system";
812 final_had_syst.push_back(ip);
816 if( count(final_had_syst.begin(), final_had_syst.end(), -1) > 0) {
829 LOG(
"gntpc",
pDEBUG) <<
"Extracting primary hadronic system";
832 TObjArrayIter piter_prim(&event);
834 vector<int> prim_had_syst;
841 for( vector<int>::const_iterator hiter = final_had_syst.begin();
842 hiter != final_had_syst.end(); ++hiter) {
844 prim_had_syst.push_back(*hiter);
870 int ist_comp = p->
Status();
877 prim_had_syst.push_back(ip);
884 int ist_comp = p->
Status();
890 prim_had_syst.push_back(ip);
897 int ist_comp = p->
Status();
904 prim_had_syst.push_back(ip);
911 int ist_comp = p->
Status();
918 prim_had_syst.push_back(ip);
926 for(
int i = target->
FirstDaughter(); i <= target->LastDaughter(); i++) {
936 if( count(prim_had_syst.begin(), prim_had_syst.end(), -1) > 0) {
945 brNeutrino = (neutrino) ? neutrino->
Pdg() : 0;
946 brFSPrimLept = (fsl) ? fsl->
Pdg() : 0;
947 brTarget = target->
Pdg();
950 brHitNuc = (hitnucl) ? hitnucl->
Pdg() : 0;
961 brIsSingleK = is_singlek;
967 brIsCharmPro = charm;
968 brIsAMNuGamma= is_amnugamma;
981 brEvRF = k1_rf.Energy();
986 brEn = (hitnucl) ? p1.Energy() : 0;
987 brPxn = (hitnucl) ? p1.Px() : 0;
988 brPyn = (hitnucl) ? p1.Py() : 0;
989 brPzn = (hitnucl) ? p1.Pz() : 0;
995 brCosthl = TMath::Cos( k2.Vect().Angle(k1.Vect()) );
1000 brDXSec =
event.DiffXSec()*(1E+38/
units::cm2);
1001 brKPS =
event.DiffXSecVars();
1014 brNi = prim_had_syst.size();
1015 for(
int j=0; j<brNi; j++) {
1016 p =
event.Particle(prim_had_syst[j]);
1018 brPdgi[j] = p->
Pdg();
1021 brPxi [j] = p->
Px();
1022 brPyi [j] = p->
Py();
1023 brPzi [j] = p->
Pz();
1037 <<
"Counting in primary hadronic system: idx = " << prim_had_syst[j]
1038 <<
" -> " << p->
Name();
1043 <<
", N(n):" << brNiN
1044 <<
", N(pi+):" << brNiPip
1045 <<
", N(pi-):" << brNiPim
1046 <<
", N(pi0):" << brNiPi0
1047 <<
", N(K+,K-,K0):" << brNiKp+brNiKm+brNiK0
1048 <<
", N(gamma,e-,e+):" << brNiEM
1049 <<
", N(etc):" << brNiOther <<
"\n";
1063 brSumKEf = (fsl) ? fsl->
KinE() : 0;
1066 brNf = final_had_syst.size();
1067 for(
int j=0; j<brNf; j++) {
1068 p =
event.Particle(final_had_syst[j]);
1071 int hpdg = p->
Pdg();
1073 double hKE = p->
KinE();
1074 double hpx = p->
Px();
1075 double hpy = p->
Py();
1076 double hpz = p->
Pz();
1077 double hp = TMath::Sqrt(hpx*hpx + hpy*hpy + hpz*hpz);
1078 double hm = p->
Mass();
1079 double hcth = TMath::Cos( p->
P4()->Vect().Angle(k1.Vect()) );
1091 if ( hpdg ==
kPdgProton ) { brNfP++; brCalResp0 += hKE; }
1092 else if ( hpdg ==
kPdgAntiProton ) { brNfP++; brCalResp0 += (hE + 2*hm);}
1093 else if ( hpdg ==
kPdgNeutron ) { brNfN++; brCalResp0 += hKE; }
1094 else if ( hpdg ==
kPdgAntiNeutron ) { brNfN++; brCalResp0 += (hE + 2*hm);}
1095 else if ( hpdg ==
kPdgPiP ) { brNfPip++; brCalResp0 += hKE; }
1096 else if ( hpdg ==
kPdgPiM ) { brNfPim++; brCalResp0 += hKE; }
1097 else if ( hpdg ==
kPdgPi0 ) { brNfPi0++; brCalResp0 += (e_h * hE); }
1098 else if ( hpdg ==
kPdgKP ) { brNfKp++; brCalResp0 += hKE; }
1099 else if ( hpdg ==
kPdgKM ) { brNfKm++; brCalResp0 += hKE; }
1100 else if ( hpdg ==
kPdgK0 ) { brNfK0++; brCalResp0 += hKE; }
1101 else if ( hpdg ==
kPdgAntiK0 ) { brNfK0++; brCalResp0 += hKE; }
1102 else if ( hpdg ==
kPdgGamma ) { brNfEM++; brCalResp0 += (e_h * hE); }
1103 else if ( hpdg ==
kPdgElectron ) { brNfEM++; brCalResp0 += (e_h * hE); }
1104 else if ( hpdg ==
kPdgPositron ) { brNfEM++; brCalResp0 += (e_h * hE); }
1105 else { brNfOther++; brCalResp0 += hKE; }
1108 <<
"Counting in f/s system from hadronic vtx: idx = " << final_had_syst[j]
1109 <<
" -> " << p->
Name();
1114 <<
", N(n):" << brNfN
1115 <<
", N(pi+):" << brNfPip
1116 <<
", N(pi-):" << brNfPim
1117 <<
", N(pi0):" << brNfPi0
1118 <<
", N(K+,K-,K0):" << brNfKp+brNfKm+brNfK0
1119 <<
", N(gamma,e-,e+):" << brNfEM
1120 <<
", N(etc):" << brNfOther <<
"\n";
1136 TFolder * genv = (TFolder*) fin.Get(
"genv");
1137 TFolder * gconfig = (TFolder*) fin.Get(
"gconfig");
1139 genv ->
Write(
"genv");
1140 gconfig ->
Write(
"gconfig");
1828 TBits* brEvtFlags = 0;
1829 TObjString* brEvtCode = 0;
1839 int brStdHepPdg [
kNPmax];
1840 int brStdHepStatus[
kNPmax];
1841 int brStdHepRescat[
kNPmax];
1842 double brStdHepX4 [
kNPmax][4];
1843 double brStdHepP4 [
kNPmax][4];
1844 double brStdHepPolz [
kNPmax][3];
1853 TObjString* brNuFileName = 0;
1858 int brNuParentDecMode;
1859 double brNuParentDecP4 [4];
1860 double brNuParentDecX4 [4];
1861 double brNuParentProP4 [4];
1862 double brNuParentProX4 [4];
1863 int brNuParentProNVtx;
1914 int brNumiFluxEvtno;
1915 double brNumiFluxNdxdz;
1916 double brNumiFluxNdydz;
1917 double brNumiFluxNpz;
1918 double brNumiFluxNenergy;
1919 double brNumiFluxNdxdznea;
1920 double brNumiFluxNdydznea;
1921 double brNumiFluxNenergyn;
1922 double brNumiFluxNwtnear;
1923 double brNumiFluxNdxdzfar;
1924 double brNumiFluxNdydzfar;
1925 double brNumiFluxNenergyf;
1926 double brNumiFluxNwtfar;
1927 int brNumiFluxNorig;
1928 int brNumiFluxNdecay;
1943 int brNumiFluxNtype;
1944 double brNumiFluxVx;
1945 double brNumiFluxVy;
1946 double brNumiFluxVz;
1947 double brNumiFluxPdpx;
1948 double brNumiFluxPdpy;
1949 double brNumiFluxPdpz;
1950 double brNumiFluxPpdxdz;
1951 double brNumiFluxPpdydz;
1952 double brNumiFluxPppz;
1953 double brNumiFluxPpenergy;
1954 int brNumiFluxPpmedium;
1955 int brNumiFluxPtype;
1956 double brNumiFluxPpvx;
1957 double brNumiFluxPpvy;
1958 double brNumiFluxPpvz;
1959 double brNumiFluxMuparpx;
1960 double brNumiFluxMuparpy;
1961 double brNumiFluxMuparpz;
1962 double brNumiFluxMupare;
1963 double brNumiFluxNecm;
1964 double brNumiFluxNimpwt;
1965 double brNumiFluxXpoint;
1966 double brNumiFluxYpoint;
1967 double brNumiFluxZpoint;
1968 double brNumiFluxTvx;
1969 double brNumiFluxTvy;
1970 double brNumiFluxTvz;
1971 double brNumiFluxTpx;
1972 double brNumiFluxTpy;
1973 double brNumiFluxTpz;
1974 double brNumiFluxTptype;
1975 double brNumiFluxTgen;
1979 double brNumiFluxTgptype;
1980 double brNumiFluxTgppx;
1982 double brNumiFluxTgppy;
1984 double brNumiFluxTgppz;
1986 double brNumiFluxTprivx;
1987 double brNumiFluxTprivy;
1988 double brNumiFluxTprivz;
1989 double brNumiFluxBeamx;
1990 double brNumiFluxBeamy;
1991 double brNumiFluxBeamz;
1992 double brNumiFluxBeampx;
1993 double brNumiFluxBeampy;
1994 double brNumiFluxBeampz;
2000 TTree * rootracker_tree =
new TTree(
"gRooTracker",
"GENIE event tree rootracker format");
2010 rootracker_tree->Branch(
"EvtFlags",
"TBits", &brEvtFlags, 32000, 1);
2011 rootracker_tree->Branch(
"EvtCode",
"TObjString", &brEvtCode, 32000, 1);
2012 rootracker_tree->Branch(
"EvtNum", &brEvtNum,
"EvtNum/I");
2013 rootracker_tree->Branch(
"EvtXSec", &brEvtXSec,
"EvtXSec/D");
2014 rootracker_tree->Branch(
"EvtDXSec", &brEvtDXSec,
"EvtDXSec/D");
2015 rootracker_tree->Branch(
"EvtKPS", &brEvtKPS,
"EvtKPS/i");
2016 rootracker_tree->Branch(
"EvtWght", &brEvtWght,
"EvtWght/D");
2017 rootracker_tree->Branch(
"EvtProb", &brEvtProb,
"EvtProb/D");
2018 rootracker_tree->Branch(
"EvtVtx", brEvtVtx,
"EvtVtx[4]/D");
2019 rootracker_tree->Branch(
"StdHepN", &brStdHepN,
"StdHepN/I");
2020 rootracker_tree->Branch(
"StdHepPdg", brStdHepPdg,
"StdHepPdg[StdHepN]/I");
2021 rootracker_tree->Branch(
"StdHepStatus", brStdHepStatus,
"StdHepStatus[StdHepN]/I");
2022 rootracker_tree->Branch(
"StdHepRescat", brStdHepRescat,
"StdHepRescat[StdHepN]/I");
2023 rootracker_tree->Branch(
"StdHepX4", brStdHepX4,
"StdHepX4[StdHepN][4]/D");
2024 rootracker_tree->Branch(
"StdHepP4", brStdHepP4,
"StdHepP4[StdHepN][4]/D");
2025 rootracker_tree->Branch(
"StdHepPolz", brStdHepPolz,
"StdHepPolz[StdHepN][3]/D");
2026 rootracker_tree->Branch(
"StdHepFd", brStdHepFd,
"StdHepFd[StdHepN]/I");
2027 rootracker_tree->Branch(
"StdHepLd", brStdHepLd,
"StdHepLd[StdHepN]/I");
2028 rootracker_tree->Branch(
"StdHepFm", brStdHepFm,
"StdHepFm[StdHepN]/I");
2029 rootracker_tree->Branch(
"StdHepLm", brStdHepLm,
"StdHepLm[StdHepN]/I");
2032 rootracker_tree->Branch(
"EvtNum", &brEvtNum,
"EvtNum/I");
2033 rootracker_tree->Branch(
"EvtWght", &brEvtWght,
"EvtWght/D");
2034 rootracker_tree->Branch(
"EvtVtx", brEvtVtx,
"EvtVtx[4]/D");
2035 rootracker_tree->Branch(
"StdHepN", &brStdHepN,
"StdHepN/I");
2036 rootracker_tree->Branch(
"StdHepPdg", brStdHepPdg,
"StdHepPdg[StdHepN]/I");
2037 rootracker_tree->Branch(
"StdHepX4", brStdHepX4,
"StdHepX4[StdHepN][4]/D");
2038 rootracker_tree->Branch(
"StdHepP4", brStdHepP4,
"StdHepP4[StdHepN][4]/D");
2045 rootracker_tree->Branch(
"G2NeutEvtCode", &brNeutCode,
"G2NeutEvtCode/I");
2047 rootracker_tree->Branch(
"NuFileName",
"TObjString", &brNuFileName, 32000, 1);
2048 rootracker_tree->Branch(
"NuParentPdg", &brNuParentPdg,
"NuParentPdg/I");
2049 rootracker_tree->Branch(
"NuParentDecMode", &brNuParentDecMode,
"NuParentDecMode/I");
2050 rootracker_tree->Branch(
"NuParentDecP4", brNuParentDecP4,
"NuParentDecP4[4]/D");
2051 rootracker_tree->Branch(
"NuParentDecX4", brNuParentDecX4,
"NuParentDecX4[4]/D");
2052 rootracker_tree->Branch(
"NuParentProP4", brNuParentProP4,
"NuParentProP4[4]/D");
2053 rootracker_tree->Branch(
"NuParentProX4", brNuParentProX4,
"NuParentProX4[4]/D");
2054 rootracker_tree->Branch(
"NuParentProNVtx", &brNuParentProNVtx,
"NuParentProNVtx/I");
2056 rootracker_tree->Branch(
"NuFluxEntry", &brNuFluxEntry,
"NuFluxEntry/L");
2057 rootracker_tree->Branch(
"NuIdfd", &brNuIdfd,
"NuIdfd/I");
2058 rootracker_tree->Branch(
"NuCospibm", &brNuCospibm,
"NuCospibm/F");
2059 rootracker_tree->Branch(
"NuCospi0bm", &brNuCospi0bm,
"NuCospi0bm/F");
2060 rootracker_tree->Branch(
"NuGipart", &brNuGipart,
"NuGipart/I");
2061 rootracker_tree->Branch(
"NuGpos0", brNuGpos0,
"NuGpos0[3]/F");
2062 rootracker_tree->Branch(
"NuGvec0", brNuGvec0,
"NuGvec0[3]/F");
2063 rootracker_tree->Branch(
"NuGamom0", &brNuGamom0,
"NuGamom0/F");
2065 rootracker_tree->Branch(
"NuXnu", brNuXnu,
"NuXnu[2]/F");
2066 rootracker_tree->Branch(
"NuRnu", &brNuRnu,
"NuRnu/F");
2067 rootracker_tree->Branch(
"NuNg", &brNuNg,
"NuNg/I");
2068 rootracker_tree->Branch(
"NuGpid", brNuGpid,
"NuGpid[NuNg]/I");
2069 rootracker_tree->Branch(
"NuGmec", brNuGmec,
"NuGmec[NuNg]/I");
2070 rootracker_tree->Branch(
"NuGv", brNuGv,
"NuGv[NuNg][3]/F");
2071 rootracker_tree->Branch(
"NuGp", brNuGp,
"NuGp[NuNg][3]/F");
2072 rootracker_tree->Branch(
"NuGcosbm", brNuGcosbm,
"NuGcosbm[NuNg]/F");
2073 rootracker_tree->Branch(
"NuGmat", brNuGmat,
"NuGmat[NuNg]/I");
2074 rootracker_tree->Branch(
"NuGdistc", brNuGdistc,
"NuGdistc[NuNg]/F");
2075 rootracker_tree->Branch(
"NuGdistal", brNuGdistal,
"NuGdistal[NuNg]/F");
2076 rootracker_tree->Branch(
"NuGdistti", brNuGdistti,
"NuGdistti[NuNg]/F");
2077 rootracker_tree->Branch(
"NuGdistfe", brNuGdistfe,
"NuGdistfe[NuNg]/F");
2078 rootracker_tree->Branch(
"NuNorm", &brNuNorm,
"NuNorm/F");
2079 rootracker_tree->Branch(
"NuEnusk", &brNuEnusk,
"NuEnusk/F");
2080 rootracker_tree->Branch(
"NuNormsk", &brNuNormsk,
"NuNormsk/F");
2081 rootracker_tree->Branch(
"NuAnorm", &brNuAnorm,
"NuAnorm/F");
2082 rootracker_tree->Branch(
"NuVersion", &brNuVersion,
"NuVersion/F");
2083 rootracker_tree->Branch(
"NuNtrig", &brNuNtrig,
"NuNtrig/I");
2084 rootracker_tree->Branch(
"NuTuneid", &brNuTuneid,
"NuTuneid/I");
2085 rootracker_tree->Branch(
"NuPint", &brNuPint,
"NuPint/I");
2086 rootracker_tree->Branch(
"NuBpos", brNuBpos,
"NuBpos[2]/F");
2087 rootracker_tree->Branch(
"NuBtilt", brNuBtilt,
"NuBtilt[2]/F");
2088 rootracker_tree->Branch(
"NuBrms", brNuBrms,
"NuBrms[2]/F");
2089 rootracker_tree->Branch(
"NuEmit", brNuEmit,
"NuEmit[2]/F");
2090 rootracker_tree->Branch(
"NuAlpha", brNuAlpha,
"NuAlpha[2]/F");
2091 rootracker_tree->Branch(
"NuHcur", brNuHcur,
"NuHcur[3]/F");
2092 rootracker_tree->Branch(
"NuRand", &brNuRand,
"NuRand/I");
2100 rootracker_tree->Branch(
"NumiFluxRun", &brNumiFluxRun,
"NumiFluxRun/I");
2101 rootracker_tree->Branch(
"NumiFluxEvtno", &brNumiFluxEvtno,
"NumiFluxEvtno/I");
2102 rootracker_tree->Branch(
"NumiFluxNdxdz", &brNumiFluxNdxdz,
"NumiFluxNdxdz/D");
2103 rootracker_tree->Branch(
"NumiFluxNdydz", &brNumiFluxNdydz,
"NumiFluxNdydz/D");
2104 rootracker_tree->Branch(
"NumiFluxNpz", &brNumiFluxNpz,
"NumiFluxNpz/D");
2105 rootracker_tree->Branch(
"NumiFluxNenergy", &brNumiFluxNenergy,
"NumiFluxNenergy/D");
2106 rootracker_tree->Branch(
"NumiFluxNdxdznea", &brNumiFluxNdxdznea,
"NumiFluxNdxdznea/D");
2107 rootracker_tree->Branch(
"NumiFluxNdydznea", &brNumiFluxNdydznea,
"NumiFluxNdydznea/D");
2108 rootracker_tree->Branch(
"NumiFluxNenergyn", &brNumiFluxNenergyn,
"NumiFluxNenergyn/D");
2109 rootracker_tree->Branch(
"NumiFluxNwtnear", &brNumiFluxNwtnear,
"NumiFluxNwtnear/D");
2110 rootracker_tree->Branch(
"NumiFluxNdxdzfar", &brNumiFluxNdxdzfar,
"NumiFluxNdxdzfar/D");
2111 rootracker_tree->Branch(
"NumiFluxNdydzfar", &brNumiFluxNdydzfar,
"NumiFluxNdydzfar/D");
2112 rootracker_tree->Branch(
"NumiFluxNenergyf", &brNumiFluxNenergyf,
"NumiFluxNenergyf/D");
2113 rootracker_tree->Branch(
"NumiFluxNwtfar", &brNumiFluxNwtfar,
"NumiFluxNwtfar/D");
2114 rootracker_tree->Branch(
"NumiFluxNorig", &brNumiFluxNorig,
"NumiFluxNorig/I");
2115 rootracker_tree->Branch(
"NumiFluxNdecay", &brNumiFluxNdecay,
"NumiFluxNdecay/I");
2116 rootracker_tree->Branch(
"NumiFluxNtype", &brNumiFluxNtype,
"NumiFluxNtype/I");
2117 rootracker_tree->Branch(
"NumiFluxVx", &brNumiFluxVx,
"NumiFluxVx/D");
2118 rootracker_tree->Branch(
"NumiFluxVy", &brNumiFluxVy,
"NumiFluxVy/D");
2119 rootracker_tree->Branch(
"NumiFluxVz", &brNumiFluxVz,
"NumiFluxVz/D");
2120 rootracker_tree->Branch(
"NumiFluxPdpx", &brNumiFluxPdpx,
"NumiFluxPdpx/D");
2121 rootracker_tree->Branch(
"NumiFluxPdpy", &brNumiFluxPdpy,
"NumiFluxPdpy/D");
2122 rootracker_tree->Branch(
"NumiFluxPdpz", &brNumiFluxPdpz,
"NumiFluxPdpz/D");
2123 rootracker_tree->Branch(
"NumiFluxPpdxdz", &brNumiFluxPpdxdz,
"NumiFluxPpdxdz/D");
2124 rootracker_tree->Branch(
"NumiFluxPpdydz", &brNumiFluxPpdydz,
"NumiFluxPpdydz/D");
2125 rootracker_tree->Branch(
"NumiFluxPppz", &brNumiFluxPppz,
"NumiFluxPppz/D");
2126 rootracker_tree->Branch(
"NumiFluxPpenergy", &brNumiFluxPpenergy,
"NumiFluxPpenergy/D");
2127 rootracker_tree->Branch(
"NumiFluxPpmedium", &brNumiFluxPpmedium,
"NumiFluxPpmedium/I");
2128 rootracker_tree->Branch(
"NumiFluxPtype", &brNumiFluxPtype,
"NumiFluxPtype/I");
2129 rootracker_tree->Branch(
"NumiFluxPpvx", &brNumiFluxPpvx,
"NumiFluxPpvx/D");
2130 rootracker_tree->Branch(
"NumiFluxPpvy", &brNumiFluxPpvy,
"NumiFluxPpvy/D");
2131 rootracker_tree->Branch(
"NumiFluxPpvz", &brNumiFluxPpvz,
"NumiFluxPpvz/D");
2132 rootracker_tree->Branch(
"NumiFluxMuparpx", &brNumiFluxMuparpx,
"NumiFluxMuparpx/D");
2133 rootracker_tree->Branch(
"NumiFluxMuparpy", &brNumiFluxMuparpy,
"NumiFluxMuparpy/D");
2134 rootracker_tree->Branch(
"NumiFluxMuparpz", &brNumiFluxMuparpz,
"NumiFluxMuparpz/D");
2135 rootracker_tree->Branch(
"NumiFluxMupare", &brNumiFluxMupare,
"NumiFluxMupare/D");
2136 rootracker_tree->Branch(
"NumiFluxNecm", &brNumiFluxNecm,
"NumiFluxNecm/D");
2137 rootracker_tree->Branch(
"NumiFluxNimpwt", &brNumiFluxNimpwt,
"NumiFluxNimpwt/D");
2138 rootracker_tree->Branch(
"NumiFluxXpoint", &brNumiFluxXpoint,
"NumiFluxXpoint/D");
2139 rootracker_tree->Branch(
"NumiFluxYpoint", &brNumiFluxYpoint,
"NumiFluxYpoint/D");
2140 rootracker_tree->Branch(
"NumiFluxZpoint", &brNumiFluxZpoint,
"NumiFluxZpoint/D");
2141 rootracker_tree->Branch(
"NumiFluxTvx", &brNumiFluxTvx,
"NumiFluxTvx/D");
2142 rootracker_tree->Branch(
"NumiFluxTvy", &brNumiFluxTvy,
"NumiFluxTvy/D");
2143 rootracker_tree->Branch(
"NumiFluxTvz", &brNumiFluxTvz,
"NumiFluxTvz/D");
2144 rootracker_tree->Branch(
"NumiFluxTpx", &brNumiFluxTpx,
"NumiFluxTpx/D");
2145 rootracker_tree->Branch(
"NumiFluxTpy", &brNumiFluxTpy,
"NumiFluxTpy/D");
2146 rootracker_tree->Branch(
"NumiFluxTpz", &brNumiFluxTpz,
"NumiFluxTpz/D");
2147 rootracker_tree->Branch(
"NumiFluxTptype", &brNumiFluxTptype,
"NumiFluxTptype/I");
2148 rootracker_tree->Branch(
"NumiFluxTgen", &brNumiFluxTgen,
"NumiFluxTgen/I");
2149 rootracker_tree->Branch(
"NumiFluxTgptype", &brNumiFluxTgptype,
"NumiFluxTgptype/I");
2150 rootracker_tree->Branch(
"NumiFluxTgppx", &brNumiFluxTgppx,
"NumiFluxTgppx/D");
2151 rootracker_tree->Branch(
"NumiFluxTgppy", &brNumiFluxTgppy,
"NumiFluxTgppy/D");
2152 rootracker_tree->Branch(
"NumiFluxTgppz", &brNumiFluxTgppz,
"NumiFluxTgppz/D");
2153 rootracker_tree->Branch(
"NumiFluxTprivx", &brNumiFluxTprivx,
"NumiFluxTprivx/D");
2154 rootracker_tree->Branch(
"NumiFluxTprivy", &brNumiFluxTprivy,
"NumiFluxTprivy/D");
2155 rootracker_tree->Branch(
"NumiFluxTprivz", &brNumiFluxTprivz,
"NumiFluxTprivz/D");
2156 rootracker_tree->Branch(
"NumiFluxBeamx", &brNumiFluxBeamx,
"NumiFluxBeamx/D");
2157 rootracker_tree->Branch(
"NumiFluxBeamy", &brNumiFluxBeamy,
"NumiFluxBeamy/D");
2158 rootracker_tree->Branch(
"NumiFluxBeamz", &brNumiFluxBeamz,
"NumiFluxBeamz/D");
2159 rootracker_tree->Branch(
"NumiFluxBeampx", &brNumiFluxBeampx,
"NumiFluxBeampx/D");
2160 rootracker_tree->Branch(
"NumiFluxBeampy", &brNumiFluxBeampy,
"NumiFluxBeampy/D");
2161 rootracker_tree->Branch(
"NumiFluxBeampz", &brNumiFluxBeampz,
"NumiFluxBeampz/D");
2168 gtree =
dynamic_cast <TTree *
> ( fin.Get(
"gtree") );
2171 LOG(
"gntpc",
pINFO) <<
"Input tree header: " << *thdr;
2175 gtree->SetBranchAddress(
"gmcrec", &mcrec);
2186 LOG(
"gntpc",
pINFO) <<
"Found T2KMetaData!";
2191 <<
"Could not find T2KMetaData attached to the event tree!";
2195#ifdef __GENIE_FLUX_DRIVERS_ENABLED__
2198 gtree->SetBranchAddress(
"flux", &jnubeam_flux_info);
2202 gtree->SetBranchAddress(
"flux", &gnumi_flux_info);
2204#ifdef __GENIE_HEAVY_NEUTRAL_LEPTON_ENABLED__
2208 gtree->SetBranchAddress(
"flux", &gnumi_flux_ster);
2211 double dVars[9] = { -9.9, -9.9, -9.9, -9.9, -9.9, -9.9, -9.9, -9.9, -9.9 };
2212 int iVars[4] = { -9, -9, -9, -9 };
2213 DeclareHNLBranches( rootracker_tree, gtree, dVars, iVars );
2217 <<
"\n Flux drivers are not enabled."
2218 <<
"\n No flux pass-through information will be written-out in the rootracker file"
2219 <<
"\n If this isn't what you are supposed to be doing then build GENIE by adding "
2220 <<
"--with-flux-drivers in the configuration step.";
2224 Long64_t nmax = (
gOptN<0) ?
2225 gtree->GetEntries() : TMath::Min(gtree->GetEntries(),
gOptN);
2227 LOG(
"gntpc",
pERROR) <<
"Number of events = 0";
2230 LOG(
"gntpc",
pNOTICE) <<
"*** Analyzing: " << nmax <<
" events";
2233 for(Long64_t iev = 0; iev < nmax; iev++) {
2234 gtree->GetEntry(iev);
2242 LOG(
"gntpc",
pINFO) << *interaction;
2243#ifdef __GENIE_FLUX_DRIVERS_ENABLED__
2245 if(jnubeam_flux_info) {
2246 LOG(
"gntpc",
pINFO) << *jnubeam_flux_info;
2248 LOG(
"gntpc",
pINFO) <<
"No JNUBEAM flux info associated with this event";
2256 if(brEvtFlags)
delete brEvtFlags;
2258 if(brEvtCode)
delete brEvtCode;
2266 for(
int k=0; k<4; k++) {
2270 for(
int i=0; i<
kNPmax; i++) {
2271 brStdHepPdg [i] = 0;
2272 brStdHepStatus[i] = -1;
2273 brStdHepRescat[i] = -1;
2274 for(
int k=0; k<4; k++) {
2275 brStdHepX4 [i][k] = 0;
2276 brStdHepP4 [i][k] = 0;
2278 for(
int k=0; k<3; k++) {
2279 brStdHepPolz [i][k] = 0;
2287 brNuParentDecMode = 0;
2288 for(
int k=0; k<4; k++) {
2289 brNuParentDecP4 [k] = 0;
2290 brNuParentDecX4 [k] = 0;
2291 brNuParentProP4 [k] = 0;
2292 brNuParentProX4 [k] = 0;
2294 brNuParentProNVtx = 0;
2298 brNuCospibm = -999999.;
2299 brNuCospi0bm = -999999.;
2301 brNuGamom0 = -999999.;
2302 for(
int k=0; k< 3; k++){
2303 brNuGvec0[k] = -999999.;
2304 brNuGpos0[k] = -999999.;
2307 for(
int k=0; k<2; k++) {
2308 brNuXnu[k] = brNuBpos[k] = brNuBtilt[k] = brNuBrms[k] = brNuEmit[k] = brNuAlpha[k] = -999999.;
2310 for(
int k=0; k<3; k++) brNuHcur[k] = -999999.;
2312 for(
int k=0; k<3; k++){
2313 brNuGv[np][k] = -999999.;
2314 brNuGp[np][k] = -999999.;
2316 brNuGpid[np] = -999999;
2317 brNuGmec[np] = -999999;
2318 brNuGmat[np] = -999999;
2319 brNuGcosbm[np] = -999999.;
2320 brNuGdistc[np] = -999999.;
2321 brNuGdistal[np] = -999999.;
2322 brNuGdistti[np] = -999999.;
2323 brNuGdistfe[np] = -999999.;
2327 brNuNorm = -999999.;
2328 brNuEnusk = -999999.;
2329 brNuNormsk = -999999.;
2330 brNuAnorm = -999999.;
2331 brNuVersion= -999999.;
2332 brNuNtrig = -999999;
2333 brNuTuneid = -999999;
2336 if(brNuFileName)
delete brNuFileName;
2343 brEvtFlags =
new TBits(*event.EventFlags());
2344 brEvtCode =
new TObjString(event.Summary()->AsString().c_str());
2345 brEvtNum = (int) iev;
2346 brEvtXSec = (1E+38/
units::cm2) * event.XSec();
2347 brEvtDXSec = (1E+38/
units::cm2) * event.DiffXSec();
2348 brEvtKPS =
event.DiffXSecVars();
2350 <<
"brEvtKPS = " << brEvtKPS
2351 <<
", event.DiffXSecVars() = " <<
event.DiffXSecVars();
2352 brEvtWght =
event.Weight();
2353 brEvtProb =
event.Probability();
2354 brEvtVtx[0] =
event.Vertex()->X();
2355 brEvtVtx[1] =
event.Vertex()->Y();
2356 brEvtVtx[2] =
event.Vertex()->Z();
2357 brEvtVtx[3] =
event.Vertex()->T();
2361 TIter event_iter(&event);
2362 while ( (p =
dynamic_cast<GHepParticle *
>(event_iter.Next())) ) {
2368 brStdHepPdg [iparticle] = p->
Pdg();
2369 brStdHepStatus[iparticle] = (int) p->
Status();
2371 brStdHepX4 [iparticle][0] = p->
X4()->X();
2372 brStdHepX4 [iparticle][1] = p->
X4()->Y();
2373 brStdHepX4 [iparticle][2] = p->
X4()->Z();
2374 brStdHepX4 [iparticle][3] = p->
X4()->T();
2375 brStdHepP4 [iparticle][0] = p->
P4()->Px();
2376 brStdHepP4 [iparticle][1] = p->
P4()->Py();
2377 brStdHepP4 [iparticle][2] = p->
P4()->Pz();
2378 brStdHepP4 [iparticle][3] = p->
P4()->E();
2390 brStdHepN = iparticle;
2400#ifdef __GENIE_FLUX_DRIVERS_ENABLED__
2405 if(jnubeam_flux_info) {
2407 brNuParentDecMode = jnubeam_flux_info->
mode;
2409 brNuParentDecP4 [0] = jnubeam_flux_info->
ppi * jnubeam_flux_info->
npi[0];
2410 brNuParentDecP4 [1] = jnubeam_flux_info->
ppi * jnubeam_flux_info->
npi[1];
2411 brNuParentDecP4 [2] = jnubeam_flux_info->
ppi * jnubeam_flux_info->
npi[2];
2412 brNuParentDecP4 [3] = TMath::Sqrt(
2413 TMath::Power(pdglib->
Find(brNuParentPdg)->Mass(), 2.)
2414 + TMath::Power(jnubeam_flux_info->
ppi, 2.)
2416 brNuParentDecX4 [0] = jnubeam_flux_info->
xpi[0];
2417 brNuParentDecX4 [1] = jnubeam_flux_info->
xpi[1];
2418 brNuParentDecX4 [2] = jnubeam_flux_info->
xpi[2];
2419 brNuParentDecX4 [3] = 0;
2421 brNuParentProP4 [0] = jnubeam_flux_info->
ppi0 * jnubeam_flux_info->
npi0[0];
2422 brNuParentProP4 [1] = jnubeam_flux_info->
ppi0 * jnubeam_flux_info->
npi0[1];
2423 brNuParentProP4 [2] = jnubeam_flux_info->
ppi0 * jnubeam_flux_info->
npi0[2];
2424 brNuParentProP4 [3] = TMath::Sqrt(
2425 TMath::Power(pdglib->
Find(brNuParentPdg)->Mass(), 2.)
2426 + TMath::Power(jnubeam_flux_info->
ppi0, 2.)
2428 brNuParentProX4 [0] = jnubeam_flux_info->
xpi0[0];
2429 brNuParentProX4 [1] = jnubeam_flux_info->
xpi0[1];
2430 brNuParentProX4 [2] = jnubeam_flux_info->
xpi0[2];
2431 brNuParentProX4 [3] = 0;
2433 brNuParentProNVtx = jnubeam_flux_info->
nvtx0;
2436 brNuFluxEntry = jnubeam_flux_info->
fluxentry;
2437 brNuIdfd = jnubeam_flux_info->
idfd;
2438 brNuCospibm = jnubeam_flux_info->
cospibm;
2439 brNuCospi0bm = jnubeam_flux_info->
cospi0bm;
2440 brNuGipart = jnubeam_flux_info->
gipart;
2441 brNuGamom0 = jnubeam_flux_info->
gamom0;
2442 for(
int k=0; k<3; k++){
2443 brNuGpos0[k] = (double) jnubeam_flux_info->
gpos0[k];
2444 brNuGvec0[k] = (double) jnubeam_flux_info->
gvec0[k];
2447 brNuXnu[0] = (double) jnubeam_flux_info->
xnu;
2448 brNuXnu[1] = (double) jnubeam_flux_info->
ynu;
2449 brNuRnu = (double) jnubeam_flux_info->
rnu;
2450 for(
int k=0; k<2; k++){
2451 brNuBpos[k] = (double) jnubeam_flux_info->
bpos[k];
2452 brNuBtilt[k] = (double) jnubeam_flux_info->
btilt[k];
2453 brNuBrms[k] = (double) jnubeam_flux_info->
brms[k];
2454 brNuEmit[k] = (double) jnubeam_flux_info->
emit[k];
2455 brNuAlpha[k] = (double) jnubeam_flux_info->
alpha[k];
2457 for(
int k=0; k<3; k++) brNuHcur[k] = jnubeam_flux_info->
hcur[k];
2459 brNuGv[np][0] = jnubeam_flux_info->
gvx[np];
2460 brNuGv[np][1] = jnubeam_flux_info->
gvy[np];
2461 brNuGv[np][2] = jnubeam_flux_info->
gvz[np];
2462 brNuGp[np][0] = jnubeam_flux_info->
gpx[np];
2463 brNuGp[np][1] = jnubeam_flux_info->
gpy[np];
2464 brNuGp[np][2] = jnubeam_flux_info->
gpz[np];
2465 brNuGpid[np] = jnubeam_flux_info->
gpid[np];
2466 brNuGmec[np] = jnubeam_flux_info->
gmec[np];
2467 brNuGcosbm[np] = jnubeam_flux_info->
gcosbm[np];
2468 brNuGmat[np] = jnubeam_flux_info->
gmat[np];
2469 brNuGdistc[np] = jnubeam_flux_info->
gdistc[np];
2470 brNuGdistal[np] = jnubeam_flux_info->
gdistal[np];
2471 brNuGdistti[np] = jnubeam_flux_info->
gdistti[np];
2472 brNuGdistfe[np] = jnubeam_flux_info->
gdistfe[np];
2474 brNuNg = jnubeam_flux_info->
ng;
2475 brNuNorm = jnubeam_flux_info->
norm;
2476 brNuEnusk = jnubeam_flux_info->
Enusk;
2477 brNuNormsk = jnubeam_flux_info->
normsk;
2478 brNuAnorm = jnubeam_flux_info->
anorm;
2479 brNuVersion= jnubeam_flux_info->
version;
2480 brNuNtrig = jnubeam_flux_info->
ntrig;
2481 brNuTuneid = jnubeam_flux_info->
tuneid;
2482 brNuPint = jnubeam_flux_info->
pint;
2483 brNuRand = jnubeam_flux_info->
rand;
2484 brNuFileName =
new TObjString(jnubeam_flux_info->
fluxfilename.c_str());
2493#ifdef __GENIE_FLUX_DRIVERS_ENABLED__
2496 if(gnumi_flux_info) {
2497 brNumiFluxRun = gnumi_flux_info->
run;
2498 brNumiFluxEvtno = gnumi_flux_info->
evtno;
2499 brNumiFluxNdxdz = gnumi_flux_info->
ndxdz;
2500 brNumiFluxNdydz = gnumi_flux_info->
ndydz;
2501 brNumiFluxNpz = gnumi_flux_info->
npz;
2502 brNumiFluxNenergy = gnumi_flux_info->
nenergy;
2503 brNumiFluxNdxdznea = gnumi_flux_info->
ndxdznea;
2504 brNumiFluxNdydznea = gnumi_flux_info->
ndydznea;
2505 brNumiFluxNenergyn = gnumi_flux_info->
nenergyn;
2506 brNumiFluxNwtnear = gnumi_flux_info->
nwtnear;
2507 brNumiFluxNdxdzfar = gnumi_flux_info->
ndxdzfar;
2508 brNumiFluxNdydzfar = gnumi_flux_info->
ndydzfar;
2509 brNumiFluxNenergyf = gnumi_flux_info->
nenergyf;
2510 brNumiFluxNwtfar = gnumi_flux_info->
nwtfar;
2511 brNumiFluxNorig = gnumi_flux_info->
norig;
2512 brNumiFluxNdecay = gnumi_flux_info->
ndecay;
2513 brNumiFluxNtype = gnumi_flux_info->
ntype;
2514 brNumiFluxVx = gnumi_flux_info->
vx;
2515 brNumiFluxVy = gnumi_flux_info->
vy;
2516 brNumiFluxVz = gnumi_flux_info->
vz;
2517 brNumiFluxPdpx = gnumi_flux_info->
pdpx;
2518 brNumiFluxPdpy = gnumi_flux_info->
pdpy;
2519 brNumiFluxPdpz = gnumi_flux_info->
pdpz;
2520 brNumiFluxPpdxdz = gnumi_flux_info->
ppdxdz;
2521 brNumiFluxPpdydz = gnumi_flux_info->
ppdydz;
2522 brNumiFluxPppz = gnumi_flux_info->
pppz;
2523 brNumiFluxPpenergy = gnumi_flux_info->
ppenergy;
2524 brNumiFluxPpmedium = gnumi_flux_info->
ppmedium;
2525 brNumiFluxPtype = gnumi_flux_info->
ptype;
2526 brNumiFluxPpvx = gnumi_flux_info->
ppvx;
2527 brNumiFluxPpvy = gnumi_flux_info->
ppvy;
2528 brNumiFluxPpvz = gnumi_flux_info->
ppvz;
2529 brNumiFluxMuparpx = gnumi_flux_info->
muparpx;
2530 brNumiFluxMuparpy = gnumi_flux_info->
muparpy;
2531 brNumiFluxMuparpz = gnumi_flux_info->
muparpz;
2532 brNumiFluxMupare = gnumi_flux_info->
mupare;
2533 brNumiFluxNecm = gnumi_flux_info->
necm;
2534 brNumiFluxNimpwt = gnumi_flux_info->
nimpwt;
2535 brNumiFluxXpoint = gnumi_flux_info->
xpoint;
2536 brNumiFluxYpoint = gnumi_flux_info->
ypoint;
2537 brNumiFluxZpoint = gnumi_flux_info->
zpoint;
2538 brNumiFluxTvx = gnumi_flux_info->
tvx;
2539 brNumiFluxTvy = gnumi_flux_info->
tvy;
2540 brNumiFluxTvz = gnumi_flux_info->
tvz;
2541 brNumiFluxTpx = gnumi_flux_info->
tpx;
2542 brNumiFluxTpy = gnumi_flux_info->
tpy;
2543 brNumiFluxTpz = gnumi_flux_info->
tpz;
2544 brNumiFluxTptype = gnumi_flux_info->
tptype;
2545 brNumiFluxTgen = gnumi_flux_info->
tgen;
2546 brNumiFluxTgptype = gnumi_flux_info->
tgptype;
2547 brNumiFluxTgppx = gnumi_flux_info->
tgppx;
2548 brNumiFluxTgppy = gnumi_flux_info->
tgppy;
2549 brNumiFluxTgppz = gnumi_flux_info->
tgppz;
2550 brNumiFluxTprivx = gnumi_flux_info->
tprivx;
2551 brNumiFluxTprivy = gnumi_flux_info->
tprivy;
2552 brNumiFluxTprivz = gnumi_flux_info->
tprivz;
2553 brNumiFluxBeamx = gnumi_flux_info->
beamx;
2554 brNumiFluxBeamy = gnumi_flux_info->
beamy;
2555 brNumiFluxBeamz = gnumi_flux_info->
beamz;
2556 brNumiFluxBeampx = gnumi_flux_info->
beampx;
2557 brNumiFluxBeampy = gnumi_flux_info->
beampy;
2558 brNumiFluxBeampz = gnumi_flux_info->
beampz;
2566#ifdef __GENIE_HEAVY_NEUTRAL_LEPTON_ENABLED__
2567 if( gnumi_flux_ster ){
2568 iVars[1] = gnumi_flux_ster->
prodChan;
2569 iVars[2] = gnumi_flux_ster->
nuPdg;
2570 iVars[3] = gnumi_flux_ster->
lepPdg;
2572 dVars[4] = gnumi_flux_ster->
p4User.Px() / gnumi_flux_ster->
p4User.Pz();
2573 dVars[5] = gnumi_flux_ster->
p4User.Py() / gnumi_flux_ster->
p4User.Pz();
2574 dVars[6] = gnumi_flux_ster->
p4User.Pz();
2575 dVars[7] = gnumi_flux_ster->
nuEcm;
2576 dVars[8] = gnumi_flux_ster->
accCorr;
2581 rootracker_tree->Fill();
2587 double pot = gtree->GetWeight();
2588 rootracker_tree->SetWeight(pot);
2592 TFolder * genv = (TFolder*) fin.Get(
"genv");
2593 TFolder * gconfig = (TFolder*) fin.Get(
"gconfig");
2595 genv ->
Write(
"genv");
2596 gconfig ->
Write(
"gconfig");
2604 LOG(
"gntpc",
pINFO) <<
"\nDone converting GENIE's GHEP ntuple";