#include <vector>#include <ostream>Go to the source code of this file.
|
|
|
|
|
Definition at line 12 of file inuke_rw.h. 00012 {
00013 kPion,
00014 kNucleon,
00015 kOther
00016 } inuke_particle_t;
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 231 of file inuke_rw.cxx. References inuke_reweight::calc_weights(), inuke_reweight::change_fate_probs(), inuke_reweight::change_inter_scales(), inuke_reweight::clear_stdhep(), inuke_reweight::fill_stdhep(), inuke_reweight::get_idx_had(), inuke_reweight::get_nucrad(), inuke_reweight::parameter_set::pi_fate, inuke_reweight::parameter_set::pi_scale, inuke_reweight::parameter_set::pn_fate, inuke_reweight::parameter_set::pn_scale, inuke_reweight::print_stdhep(), and inuke_reweight::unif_to_ws_fe(). 00234 {
00235 if(!rec) return;
00236 if(!mct) return;
00237 if(psets.size()==0) return;
00238
00239 // assure w is the size of psets
00240 weights.resize(psets.size());
00241 // loop over all parameter sets
00242 for (unsigned int i=0; i<psets.size(); i++){
00243 const parameter_set& p=psets[i];
00244 inuke_reweight::change_fate_probs(p.pi_fate,inuke_reweight::kPion);
00245 inuke_reweight::change_inter_scales(p.pi_scale,inuke_reweight::kPion);
00246 inuke_reweight::change_fate_probs(p.pn_fate,inuke_reweight::kNucleon);
00247 inuke_reweight::change_inter_scales(p.pn_scale,inuke_reweight::kNucleon);
00248
00249 const TClonesArray& stdheps = *(rec->stdhep);
00250
00251 if(verbose) mct->Print();
00252 int nfill = inuke_reweight::fill_stdhep(*mct, stdheps);
00253 if(verbose){
00254 std::cout<<"MC Event: "<<i<<" filled "<<nfill<<" entries"<<std::endl;
00255 inuke_reweight::print_stdhep(2);
00256 }
00257 double w=inuke_reweight::calc_weights(); // for current stdhep
00258 weights[i]=w;
00259 if(verbose) std::cout<<"weights["<<i<<"] = "<<w<<std::endl;
00260 nucrad=-1.0; wrad=1.0;
00261 if(mct->z == 26){ // iron only
00262 int idx_had=inuke_reweight::get_idx_had();
00263 nucrad=inuke_reweight::get_nucrad(idx_had);
00264 wrad=inuke_reweight::unif_to_ws_fe(nucrad);
00265 }
00266
00267
00268 inuke_reweight::clear_stdhep();
00269 }
00270
00271 }
|
|
||||||||||||||||
|
Definition at line 274 of file inuke_rw.cxx. References inuke_reweight::calc_weights(), inuke_reweight::clear_stdhep(), inuke_reweight::fill_stdhep(), NtpStRecord::mc, NtpStRecord::mchdr, NtpMCSummary::nmc, NtpMCTruth::Print(), inuke_reweight::print_stdhep(), and NtpStRecord::stdhep. 00274 {
00275
00276 const TClonesArray& mc_array= *(rec->mc);
00277 const TClonesArray& stdheps = *(rec->stdhep);
00278 const int nmc = rec->mchdr.nmc;
00279 for(int i=0; i<nmc; i++){
00280 const NtpMCTruth* mct = dynamic_cast<const NtpMCTruth*>(mc_array[i]);
00281 if(verbose) mct->Print();
00282
00283 int nfill = inuke_reweight::fill_stdhep(*mct, stdheps);
00284 if(verbose){
00285 std::cout<<"MC Event: "<<i<<" filled "<<nfill<<" entries"<<std::endl;
00286 inuke_reweight::print_stdhep(2);
00287 }
00288 double w=inuke_reweight::calc_weights(); // for current stdhep
00289 v.push_back(w);
00290 std::cout<<"Weight = "<<w<<std::endl;
00291
00292 inuke_reweight::clear_stdhep();
00293 }
00294 return;
00295
00296 }
|
|
|
Definition at line 211 of file inuke_rw.cxx. References fill_shower_ntuple_(), identify_hadronic_system_(), shwr_, summarise_prenuke_(), shwr::tot_w_fate, and shwr::tot_w_inter. Referenced by inuke_reweight::calc_weights(), MadMKAnalysis::CreatePAN(), NuIntranuke::Reweight(), and inuke_reweight::test_calc_weights(). 00211 {
00212 int idx_had, icode_had;
00213
00214 identify_hadronic_system_(&idx_had,&icode_had);
00215 if(icode_had==4){ return 1.0 ;} // nucleon target
00216 if(icode_had==0){ return 1.0 ;} // probably IMD
00217 // inuke_reweight::print_stdhep(2);
00218 // std::cout<<"idx_had icode_had: "<<idx_had<<" "<<icode_had<<std::endl;
00219 summarise_prenuke_(&idx_had,&icode_had);
00220 // inuke_reweight::print_stdhep(2);
00221 fill_shower_ntuple_();
00222 // inuke_reweight::print_stdhep(2);
00223 double W=shwr_.tot_w_fate * shwr_.tot_w_inter;
00224 return W;
00225
00226 }
|
|
||||||||||||
|
Definition at line 161 of file inuke_rw.cxx. References inuke_reweight::delta_fate::abs, inuke_reweight::delta_fate::cex, change_fate_probs_(), inuke_reweight::delta_fate::elas, inuke_reweight::delta_fate::inel, inuke_reweight::delta_fate::nnp, inuke_reweight::delta_fate::npnp, inuke_reweight::delta_fate::npp, inuke_reweight::delta_fate::piprod, and inuke_reweight::delta_fate::pp. Referenced by inuke_reweight::calc_weights(), and inuke_reweight::test_calc_weights(). 00162 {
00163
00164
00165 float v[10];
00166 v[0]=p.cex; v[1]=p.elas; v[2]=p.inel;
00167 v[3]=p.abs; v[4]=p.pp; v[5]=p.npp;
00168 v[6]=p.nnp; v[7]=p.npnp; v[8]=p.piprod;
00169 v[9]=0.0;
00170
00171 int i=-1;
00172 if(t == inuke_reweight::kPion) i=0;
00173 else if( t == inuke_reweight::kNucleon ) i=1;
00174 // for(int i=0; i<10; i++) std::cout<<"v["<<i<<"] = "<<v[i]<<std::endl;
00175 change_fate_probs_(v,&i);
00176
00177 }
|
|
||||||||||||
|
Definition at line 188 of file inuke_rw.cxx. References inuke_reweight::delta_scale::ft, interaction_rw_, inuke_reweight::delta_scale::rhonuc, interaction_rw::rw_pi_ft_scale, interaction_rw::rw_pi_xsec_scale, interaction_rw::rw_pn_ft_scale, interaction_rw::rw_pn_xsec_scale, interaction_rw::rw_rhonuc_scale, and inuke_reweight::delta_scale::xsec. Referenced by inuke_reweight::calc_weights(), and inuke_reweight::test_calc_weights(). 00189 {
00190
00191 // p.xsec = 0.2 means raise cross section by 20%
00192
00193 interaction_rw_.rw_rhonuc_scale = (1+p.rhonuc);
00194
00195 if(t==inuke_reweight::kPion){
00196 interaction_rw_.rw_pi_ft_scale=(1+p.ft);
00197 interaction_rw_.rw_pi_xsec_scale=(1+p.xsec);
00198 }
00199 else if (t==inuke_reweight::kNucleon){
00200 interaction_rw_.rw_pn_ft_scale=(1+p.ft);
00201 interaction_rw_.rw_pn_xsec_scale=(1+p.xsec);
00202 }
00203
00204 }
|
|
||||||||||||
|
Definition at line 410 of file inuke_rw.cxx. References inuke_reweight::get_1sigma_shifts(), inuke_reweight::parameter_set::pi_fate, inuke_reweight::parameter_set::pi_scale, inuke_reweight::parameter_set::pn_fate, and inuke_reweight::parameter_set::pn_scale. Referenced by MadMKAnalysis::CreatePAN(), and NuIntranuke::InitReweight(). 00411 {
00412
00413 std::vector<inuke_reweight::delta_fate> w;
00414 get_1sigma_shifts(sigmas.pi_fate,w);
00415 for (unsigned int i=0; i<w.size(); i++){
00416 inuke_reweight::parameter_set p;
00417 p.pi_fate=w[i];
00418 v.push_back(p);
00419 }
00420 w.clear();
00421 get_1sigma_shifts(sigmas.pn_fate,w);
00422 for (unsigned int i=0; i<w.size(); i++){
00423 inuke_reweight::parameter_set p;
00424 p.pn_fate=w[i];
00425 v.push_back(p);
00426 }
00427
00428 std::vector<inuke_reweight::delta_scale> y;
00429 get_1sigma_shifts(sigmas.pi_scale,y);
00430 for (unsigned int i=0; i<y.size(); i++){
00431 inuke_reweight::parameter_set p;
00432 p.pi_scale=y[i];
00433 v.push_back(p);
00434 }
00435 y.clear();
00436 get_1sigma_shifts(sigmas.pn_scale,y);
00437 for (unsigned int i=0; i<y.size(); i++){
00438 inuke_reweight::parameter_set p;
00439 p.pn_scale=y[i];
00440 v.push_back(p);
00441 }
00442
00443
00444
00445 }
|
|
||||||||||||||||
|
Definition at line 507 of file inuke_rw.cxx. References inuke_reweight::get_uncor_shifts(). Referenced by MadMKAnalysis::CreatePAN(), and NuIntranuke::InitReweight(). 00509 {
00510
00511 inuke_reweight::get_uncor_shifts(sigmas.pi_fate,
00512 limits.lower.pi_fate,
00513 limits.upper.pi_fate,
00514 p.pi_fate);
00515 inuke_reweight::get_uncor_shifts(sigmas.pn_fate,
00516 limits.lower.pn_fate,
00517 limits.upper.pn_fate,
00518 p.pn_fate);
00519
00520 inuke_reweight::get_uncor_shifts(sigmas.pi_scale,
00521 limits.lower.pi_scale,
00522 limits.upper.pi_scale,
00523 p.pi_scale);
00524 inuke_reweight::get_uncor_shifts(sigmas.pn_scale,
00525 limits.lower.pn_scale,
00526 limits.upper.pn_scale,
00527 p.pn_scale);
00528
00529 }
|
|
||||||||||||
|
Definition at line 357 of file inuke_rw.cxx. References inuke_reweight::delta_fate::abs, inuke_reweight::delta_fate::cex, inuke_reweight::delta_fate::elas, inuke_reweight::delta_fate::inel, inuke_reweight::delta_fate::nnp, inuke_reweight::delta_fate::npnp, inuke_reweight::delta_fate::npp, inuke_reweight::delta_fate::piprod, and inuke_reweight::delta_fate::pp. Referenced by inuke_reweight::generate_1sigma_shifts(). 00358 {
00359
00360 if(f.cex!=0) {
00361 inuke_reweight::delta_fate x;
00362 x.cex=f.cex; v.push_back(x);
00363 x.cex*= -1; v.push_back(x);
00364 }
00365 if(f.elas!=0) {
00366 inuke_reweight::delta_fate x;
00367 x.elas=f.elas; v.push_back(x);
00368 x.elas*= -1; v.push_back(x);
00369 }
00370 if(f.inel!=0) {
00371 inuke_reweight::delta_fate x;
00372 x.inel=f.inel; v.push_back(x);
00373 x.inel*= -1; v.push_back(x);
00374 }
00375 if(f.abs!=0) {
00376 inuke_reweight::delta_fate x;
00377 x.abs=f.abs; v.push_back(x);
00378 x.abs*= -1; v.push_back(x);
00379 }
00380 if(f.pp!=0) {
00381 inuke_reweight::delta_fate x;
00382 x.pp=f.pp; v.push_back(x);
00383 x.pp*= -1; v.push_back(x);
00384 }
00385 if(f.npp!=0) {
00386 inuke_reweight::delta_fate x;
00387 x.npp=f.npp; v.push_back(x);
00388 x.npp*= -1; v.push_back(x);
00389 }
00390 if(f.nnp!=0) {
00391 inuke_reweight::delta_fate x;
00392 x.nnp=f.nnp; v.push_back(x);
00393 x.nnp*= -1; v.push_back(x);
00394 }
00395 if(f.npnp!=0) {
00396 inuke_reweight::delta_fate x;
00397 x.npnp=f.npnp; v.push_back(x);
00398 x.npnp*= -1; v.push_back(x);
00399 }
00400 if(f.piprod!=0) {
00401 inuke_reweight::delta_fate x;
00402 x.piprod=f.piprod; v.push_back(x);
00403 x.piprod*= -1; v.push_back(x);
00404 }
00405
00406
00407 }
|
|
||||||||||||
|
Definition at line 335 of file inuke_rw.cxx. References inuke_reweight::delta_scale::ft, inuke_reweight::delta_scale::rhonuc, and inuke_reweight::delta_scale::xsec. 00336 {
00337
00338 if(f.rhonuc!=0){
00339 inuke_reweight::delta_scale x;
00340 x.rhonuc=f.rhonuc; v.push_back(x);
00341 x.rhonuc*=-1; v.push_back(x);
00342 }
00343 if(f.ft!=0){
00344 inuke_reweight::delta_scale x;
00345 x.ft=f.ft; v.push_back(x);
00346 x.ft*=-1; v.push_back(x);
00347 }
00348 if(f.xsec!=0){
00349 inuke_reweight::delta_scale x;
00350 x.xsec=f.xsec; v.push_back(x);
00351 x.xsec*=-1; v.push_back(x);
00352 }
00353
00354 }
|
|
|
Definition at line 585 of file inuke_rw.cxx. References identify_hadronic_system_(). Referenced by inuke_reweight::calc_weights(). 00585 {
00586 int idx_had, icode_had;
00587 identify_hadronic_system_(&idx_had,&icode_had);
00588 if(icode_had==4){ return -1 ;} // nucleon target
00589 if(icode_had==0){ return -1 ;} // probably IMD
00590 return idx_had;
00591
00592 }
|
|
|
Definition at line 596 of file inuke_rw.cxx. References hepevt_, hepevt::nhep, and hepevt::vhep. Referenced by inuke_reweight::calc_weights(). 00596 {
00597 double r=-1.0;
00598 int i=idx_had-1;
00599 if(i<0 || i>hepevt_.nhep) return r;
00600 r=0.0;
00601 for(int j=0; j<3; j++){
00602 r+=pow(hepevt_.vhep[i][j],2.0);
00603 }
00604 return sqrt(r);
00605 }
|
|
||||||||||||||||||||
|
Definition at line 476 of file inuke_rw.cxx. References inuke_reweight::delta_fate::abs, inuke_reweight::delta_fate::cex, inuke_reweight::delta_fate::elas, in_limits(), inuke_reweight::delta_fate::inel, inuke_reweight::delta_fate::nnp, inuke_reweight::delta_fate::npnp, inuke_reweight::delta_fate::npp, inuke_reweight::delta_fate::piprod, and inuke_reweight::delta_fate::pp. 00479 {
00480
00481 while(!in_limits(x.cex=gRandom->Gaus()*f.cex,llim.cex,ulim.cex));
00482 while(!in_limits(x.elas=gRandom->Gaus()*f.elas,llim.elas,ulim.elas));
00483 while(!in_limits(x.inel=gRandom->Gaus()*f.inel,llim.inel,ulim.inel));
00484 while(!in_limits(x.abs=gRandom->Gaus()*f.abs,llim.abs,ulim.abs));
00485 while(!in_limits(x.pp=gRandom->Gaus()*f.pp,llim.pp,ulim.pp));
00486 while(!in_limits(x.npp=gRandom->Gaus()*f.npp,llim.npp,ulim.npp));
00487 while(!in_limits(x.nnp=gRandom->Gaus()*f.nnp,llim.nnp,ulim.nnp));
00488 while(!in_limits(x.npnp=gRandom->Gaus()*f.npnp,llim.npnp,ulim.npnp));
00489 while(!in_limits(x.piprod=gRandom->Gaus()*f.piprod,llim.piprod,ulim.piprod));
00490
00491 /*
00492 x.cex=gRandom->Gaus()*f.cex;
00493 x.elas=gRandom->Gaus()*f.elas;
00494 x.inel=gRandom->Gaus()*f.inel;
00495 x.abs=gRandom->Gaus()*f.abs;
00496 x.pp=gRandom->Gaus()*f.pp;
00497 x.npp=gRandom->Gaus()*f.npp;
00498 x.nnp=gRandom->Gaus()*f.nnp;
00499 x.npnp=gRandom->Gaus()*f.npnp;
00500 x.piprod=gRandom->Gaus()*f.piprod;
00501 */
00502
00503 }
|
|
||||||||||||||||||||
|
Definition at line 457 of file inuke_rw.cxx. References inuke_reweight::delta_scale::ft, in_limits(), inuke_reweight::delta_scale::rhonuc, and inuke_reweight::delta_scale::xsec. Referenced by inuke_reweight::generate_uncor_shifts(). 00460 {
00461 // keep calling till in_limits
00462 while(!in_limits(x.rhonuc=gRandom->Gaus()*f.rhonuc,llim.rhonuc,ulim.rhonuc));
00463 // while(!in_limits(x.ft=gRandom->Gaus()*f.ft,llim.ft,ulim.ft));
00464 while(!in_limits(x.ft=gRandom->Uniform(-1,1)*f.ft,llim.ft,ulim.ft));
00465 while(!in_limits(x.xsec=gRandom->Gaus()*f.xsec,llim.xsec,ulim.xsec));
00466
00467 /*
00468 x.rhonuc=gRandom->Gaus()*f.rhonuc;
00469 x.ft=gRandom->Gaus()*f.ft;
00470 x.xsec=gRandom->Gaus()*f.xsec;
00471 */
00472
00473 }
|
|
||||||||||||||||
|
Definition at line 298 of file inuke_rw.cxx. References inuke_reweight::parameter_set::pi_fate, inuke_reweight::parameter_set::pi_scale, inuke_reweight::parameter_set::pn_fate, inuke_reweight::parameter_set::pn_scale, and inuke_reweight::test_calc_weights(). 00299 {
00300 inuke_reweight::test_calc_weights(filename, entry,
00301 p.pi_fate,p.pi_scale,p.pn_fate,p.pn_scale);
00302 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 306 of file inuke_rw.cxx. References inuke_reweight::calc_weights(), inuke_reweight::change_fate_probs(), and inuke_reweight::change_inter_scales(). Referenced by inuke_reweight::test_calc_weights(). 00310 {
00311
00312
00313 TFile f(filename);
00314 TTree* t = (TTree*) f.Get("NtpSt");
00315 NtpStRecord* rec=0;
00316 t->SetBranchAddress("NtpStRecord",&rec);
00317 t->GetEntry(entry);
00318
00319 change_fate_probs(pi_fate,inuke_reweight::kPion);
00320 change_fate_probs(pn_fate,inuke_reweight::kNucleon);
00321
00322 change_inter_scales(pi_scale,inuke_reweight::kPion);
00323 change_inter_scales(pn_scale,inuke_reweight::kNucleon);
00324
00325 std::vector<double> v;
00326 bool verbose=false;
00327 calc_weights(rec,v,verbose);
00328 for (unsigned int i=0; i<v.size(); i++){
00329 std::cout<<i<<" "<<v[i]<<std::endl;
00330 }
00331
00332
00333 }
|
|
|
Definition at line 575 of file inuke_rw.cxx. Referenced by inuke_reweight::calc_weights(). 00575 {
00576 double c=1.0;
00577 if(r<5.36) {
00578 // c = (pow(r,2.0)*(0.498473)/(1.+exp((r-4.1)/0.56)) )/(pow(r,2.0)*0.244814);
00579 c = ( (0.498473)/(1.+exp((r-4.1)/0.56)) )/(0.244814);
00580 }
00581 return c;
00582
00583 }
|
1.3.9.1