#include <NueSystematic.h>
Public Member Functions | |
| NueSystematic (std::string) | |
| ~NueSystematic () | |
| void | Clear () |
| void | AddSystematic (Systematic::Systematic_t sys, Double_t val) |
| Double_t | UpdateRecord (NueRecord *, Selection::Selection_t) |
| Double_t | UpdateRecord (NueRecord *, Selection::Selection_t, Background::Background_t bg) |
| Double_t | GetAppearanceWeight (NueRecord *rec, Background::Background_t bg) |
| void | MakeBranches (TTree *) |
| Char_t * | GetName () |
| void | SetSKZPParams (std::string cfg) |
| std::string | GetSKZPParams () |
| void | SetOscParams (double *par) |
| void | SetOscParams (Double_t, Double_t, Double_t, Double_t, Double_t, Double_t deltaCP=0, Int_t massH=1) |
| void | GetOscParams (Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Double_t &, Int_t &) |
| Double_t | GetSysValue (Systematic::Systematic_t sys) |
| void | SetSysValue (Systematic::Systematic_t sys, Double_t val) |
| Double_t | DoOscCalc (NueRecord *, Double_t) |
| Double_t | DoNeugenCalc (NueRecord *, Systematic::Systematic_t, Double_t) |
Private Member Functions | |
| void | Init () |
| Double_t | DoSKZPCalc (NueRecord *, Double_t) |
| Double_t | DoCalibShift (NueRecord *, Systematic::Systematic_t, Double_t) |
| Double_t | DoShwDevCalc (NueRecord *, Double_t, Selection::Selection_t) |
| Double_t | DoTauProd (NueRecord *, Double_t) |
| Double_t | DoPIDSkew (NueRecord *, Double_t, Selection::Selection_t) |
| Double_t | DoNormCalc (NueRecord *, Double_t) |
| Double_t | DoNCScale (NueRecord *record, Double_t val, Selection::Selection_t sel) |
| Double_t | DoCCShwEnergyScale (NueRecord *record, Double_t val, Selection::Selection_t sel) |
Private Attributes | |
| Char_t | fName [256] |
| std::map< Systematic::Systematic_t, Double_t > | fSysList |
| std::string | skzpcfg |
| Double_t | fTheta23 |
| Double_t | fTheta13 |
| Double_t | fTheta12 |
| Double_t | fDeltaMSq23 |
| Double_t | fDeltaMSq12 |
| Double_t | fDeltaCP |
| Int_t | fMassHierarchy |
| Double_t | fTempDouble |
| OscCalc | fOscCalc |
Static Private Attributes | |
| SKZPWeightCalculator * | skzp = 0 |
|
|
Definition at line 17 of file NueSystematic.cxx. 00017 : 00018 // skzpcfg("PiMinus_CedarDaikon"), 00019 skzpcfg("DetXs"), 00020 fTempDouble(-9999) 00021 { 00022 sprintf(fName,"%s",name.c_str()); 00023 this->Init(); 00024 }
|
|
|
Definition at line 26 of file NueSystematic.cxx. References fSysList. 00027 {
00028 fSysList.clear();
00029 //delete fNWC->GetReweightConfig();
00030 //delete fNWC;
00031 }
|
|
||||||||||||
|
Definition at line 23 of file NueSystematic.h. Referenced by NueFNExtrapolation::GetCurrentSystematic(), JBComparator::GetPredictions(), and NueExtrapolationJB::MakeDataHistograms(). 00023 {fSysList[sys] = val;}
|
|
|
Definition at line 21 of file NueSystematic.h. Referenced by JBComparator::DrawIntegral(), Comparator::DrawIntegral(), JBComparator::DrawPrediction(), JBComparator::DrawRatio(), Comparator::DrawRatio(), JBComparator::DrawSummary(), Comparator::DrawSummary(), and NueExtrapolationJB::RunExtrapStudy(). 00021 {fSysList.clear();}
|
|
||||||||||||||||
|
Definition at line 576 of file NueSystematic.cxx. References StdHepInfo::emenergy, StdHepInfo::epi0, ANtpTruthInfoBeamNue::fNueClass, VldContext::GetDetector(), RecRecordImp< T >::GetHeader(), RecHeader::GetVldContext(), NueRecord::mctrue, ANtpTruthInfo::nuEnergy, and NueRecord::shi. Referenced by UpdateRecord(). 00578 {
00579 /*
00580 This is Chris's old code, but I don't quite know why he chose this params and
00581 setup
00582 so I'm going a different way.... (JAB) 10/12/2007
00583
00584 Double_t epi_ratio = 1.26; //use a rough e/pi ratio to adjust reco energy
00585 Double_t true_shw_energy = record->mctrue.trueVisibleE;
00586 if(true_shw_energy == 0 ) return 0;
00587 Double_t true_em_energy = record->mctrue.emShowerFraction*true_shw_energy;
00588 Double_t respcor_true_energy = (true_shw_energy + (epi_ratio-1)*true_em_energy);
00589
00590 Double_t true_elec_energy = 0;
00591 if(TMath::Abs(record->mctrue.nuFlavor)==12)
00592 true_elec_energy = TMath::Abs(record->mctrue.leptonMomentum);
00593
00594 //Double_t respcor_em_frac = (epi_ratio*true_em_energy) / respcor_true_energy;
00595 Double_t respcor_em_frac = (epi_ratio*true_elec_energy) / respcor_true_energy;
00596 Double_t cor_em_frac = respcor_em_frac;
00597 */
00598
00599 Double_t cor_em_frac = 0.0;
00600
00601 if(record->mctrue.fNueClass != 0){
00602 double EMen = record->shi.emenergy - record->shi.epi0;
00603 cor_em_frac = EMen/(record->mctrue.nuEnergy);
00604 }
00605
00606 if(sys==Systematic::kEMCalib)
00607 return cor_em_frac*val;
00608 else if(sys==Systematic::kHadCalib)
00609 return (1-cor_em_frac)*val;
00610 else if(sys==Systematic::kRelCalib) {
00611 if(record->GetHeader().GetVldContext().GetDetector()!=2) return 0;
00612 return val;
00613 }
00614 return 0;
00615 }
|
|
||||||||||||||||
|
Definition at line 662 of file NueSystematic.cxx. Referenced by UpdateRecord(). 00665 {
00666 if(sel != Selection::kCC) return 0;
00667 return val;
00668 }
|
|
||||||||||||||||
|
Definition at line 653 of file NueSystematic.cxx. References ANtpTruthInfoBeamNue::fNueClass, and NueRecord::mctrue. Referenced by UpdateRecord(). 00656 {
00657 if(sel != Selection::kCC) return 1;
00658 if(record->mctrue.fNueClass == 0) return val;
00659 return 1;
00660 }
|
|
||||||||||||||||
|
Definition at line 507 of file NueSystematic.cxx. References abs(), ANtpTruthInfoBeam::atomicNumber, ANtpTruthInfoBeam::atomicWeight, ANtpTruthInfoBeam::bjorkenX, MCReweight::ComputeWeight(), ReweightHelpers::FindNucleusNumber(), MCEventInfo::had_fs, ANtpTruthInfoBeam::hadronicFinalState, ANtpTruthInfo::hadronicY, MCEventInfo::iaction, MCEventInfo::initial_state, ANtpTruthInfoBeam::initialState, MCReweight::Instance(), ANtpTruthInfo::interactionType, MCEventInfo::inu, MCEventInfo::iresonance, Registry::LockKeys(), Registry::LockValues(), NueRecord::mctrue, MCEventInfo::nucleus, ANtpTruthInfo::nuDCosX, ANtpTruthInfo::nuDCosY, ANtpTruthInfo::nuDCosZ, MCEventInfo::nuE, ANtpTruthInfo::nuEnergy, ANtpTruthInfo::nuFlavor, MCEventInfo::nuPx, MCEventInfo::nuPy, MCEventInfo::nuPz, ANtpTruthInfoBeam::q2, MCEventInfo::q2, ANtpTruthInfoBeam::resonanceCode, Registry::Set(), MCEventInfo::stdXSec, MCEventInfo::tarE, ANtpTruthInfo::targetEnergy, ANtpTruthInfo::targetPX, ANtpTruthInfo::targetPY, ANtpTruthInfo::targetPZ, MCEventInfo::tarPx, Registry::UnLockKeys(), Registry::UnLockValues(), MCEventInfo::UseStoredXSec(), ANtpTruthInfoBeam::w2, MCEventInfo::w2, MCEventInfo::x, NueXsecWeight::xsecweight, NueRecord::xsecweights, and MCEventInfo::y. Referenced by DoShwDevCalc(), NueExtrapolationJB::InitializeNeugen(), and UpdateRecord(). 00509 {
00510
00511 MCReweight *mcr = &MCReweight::Instance();
00512 // mcr->ResetAllReweightConfigs();
00513
00514 static double oldVal = -999;
00515 bool reset = false;
00516 Registry rwtconfig;
00517
00518 if(val != oldVal){
00519 rwtconfig.UnLockValues();
00520 rwtconfig.UnLockKeys();
00521 //rwtconfig.Set("neugen:config_name","MODBYRS");
00522 //rwtconfig.Set("neugen:config_no",3);
00523 rwtconfig.Set("neugen:use_scale_factors",1);
00524 if(sys==Systematic::kMA_QE) rwtconfig.Set("neugen:ma_qe",val);
00525 else if(sys==Systematic::kMA_RES) rwtconfig.Set("neugen:ma_res",val);
00526 else if(sys==Systematic::kKNO) rwtconfig.Set("neugen:scale_kno_all",val);
00527 else if(sys==Systematic::kShwDev) {
00528 rwtconfig.Set("neugen:config_no",int(val+0.5));
00529 rwtconfig.Set("neugen:config_name","MODBYRS");
00530 }
00531 rwtconfig.LockValues();
00532 rwtconfig.LockKeys();
00533 reset = true;
00534 oldVal = val;
00535 }
00536
00537 MCEventInfo ei;
00538 ei.UseStoredXSec(true);
00539 ei.nuE = record->mctrue.nuEnergy;
00540 ei.nuPx = record->mctrue.nuDCosX*ei.nuE;
00541 ei.nuPy = record->mctrue.nuDCosY*ei.nuE;
00542 ei.nuPz = record->mctrue.nuDCosZ*ei.nuE;
00543 ei.tarE = record->mctrue.targetEnergy;
00544 ei.tarPx = record->mctrue.targetPX;
00545 ei.tarPx = record->mctrue.targetPY;
00546 ei.tarPx = record->mctrue.targetPZ;
00547 ei.y = record->mctrue.hadronicY;
00548 ei.x = record->mctrue.bjorkenX;
00549 ei.q2 = record->mctrue.q2;
00550 ei.w2 = record->mctrue.w2;
00551 ei.iaction = record->mctrue.interactionType;
00552 ei.inu = record->mctrue.nuFlavor;
00553 ei.iresonance = record->mctrue.resonanceCode;
00554 ei.initial_state = record->mctrue.initialState;
00555 ei.nucleus = ReweightHelpers::
00556 FindNucleusNumber(int(record->mctrue.atomicNumber),
00557 int(record->mctrue.atomicWeight));
00558 ei.had_fs = abs(record->mctrue.hadronicFinalState);
00559 ei.stdXSec = record->xsecweights.xsecweight;
00560
00561 //std::cout << ei.nuE << " " << ei.tarE << " " << ei.y << " " << ei.q2 << " "
00562 // << ei. inu << " " << ei.initial_state << " " << ei.nucleus
00563 // << " " << ei.had_fs << std::endl;
00564 if(ei.inu<-9998 ||
00565 (ei.iresonance==1003 && TMath::Abs(ei.had_fs)<200) ) return 1;
00566 NuParent *nuparent = 0;
00567
00568 double weight = 1.0;
00569
00570 if(reset) weight = mcr->ComputeWeight(&ei,nuparent,&rwtconfig);
00571 else weight = mcr->ComputeWeight(&ei,nuparent);
00572
00573 return weight;
00574 }
|
|
||||||||||||
|
Definition at line 647 of file NueSystematic.cxx. References VldContext::GetDetector(), RecRecordImp< T >::GetHeader(), and RecHeader::GetVldContext(). Referenced by UpdateRecord(). 00648 {
00649 if(record->GetHeader().GetVldContext().GetDetector()==2) return val;
00650 return 1;
00651 }
|
|
||||||||||||
|
Definition at line 326 of file NueSystematic.cxx. References fOscCalc, fTheta13, VldContext::GetDetector(), RecRecordImp< T >::GetHeader(), RecHeader::GetVldContext(), NueRecord::mctrue, ANtpTruthInfoBeam::nonOscNuFlavor, ANtpTruthInfo::nuEnergy, ANtpTruthInfo::nuFlavor, OscCalc::Oscillate(), and OscCalc::SetOscParam(). Referenced by GetAppearanceWeight(), and UpdateRecord(). 00327 {
00328 Double_t osc_prob = 1;
00329 if(record->mctrue.nuFlavor<-9998) return osc_prob;
00330 Double_t L = 735.0;
00331 if(record->GetHeader().GetVldContext().GetDetector()==Detector::kNear){
00332 L = 1.0; return 1.0;
00333 }
00334
00335 fOscCalc.SetOscParam(OscPar::kNuAntiNu, 1);
00336 if(record->mctrue.nonOscNuFlavor < 0) fOscCalc.SetOscParam(OscPar::kNuAntiNu, -1);
00337 double ue32 = TMath::Sin(fTheta13);
00338 ue32 *= ue32;
00339
00340
00341 if( int(val+0.5) ==1 ) {
00342 osc_prob = fOscCalc.Oscillate(record->mctrue.nuFlavor,
00343 record->mctrue.nonOscNuFlavor,
00344 record->mctrue.nuEnergy);
00345 }
00346 else if( int(val+0.5) == 2 )
00347 osc_prob = fOscCalc.Oscillate(record->mctrue.nuFlavor,
00348 record->mctrue.nonOscNuFlavor,
00349 record->mctrue.nuEnergy);
00350
00351 return osc_prob;
00352 }
|
|
||||||||||||||||
|
Definition at line 634 of file NueSystematic.cxx. References NueStandard::GetPIDValue(). Referenced by UpdateRecord(). 00636 {
00637 double pid = NueStandard::GetPIDValue(record, sel);
00638
00639 if(pid > -1000)
00640 {
00641 return (1 + pid*val);
00642 }
00643
00644 return 1;
00645 }
|
|
||||||||||||||||
|
Definition at line 354 of file NueSystematic.cxx. References det, DoNeugenCalc(), StdHepInfo::epi0, VldContext::GetDetector(), RecRecordImp< T >::GetHeader(), RecHeader::GetVldContext(), ANtpTruthInfo::interactionType, NueRecord::mctrue, ANtpTruthInfoBeam::nonOscNuFlavor, ANtpTruthInfo::nuFlavor, ANtpEventInfoNue::phNueGeV, NueRecord::shi, NueRecord::srevent, Selection::StringToEnum(), Background::TranslateFromMC(), NueXsecWeight::xsecweight, and NueRecord::xsecweights. Referenced by UpdateRecord(). 00355 {
00356 // Note for later usage:
00357 // there was also a change in the nutau xsec carrot->Daikon, really this
00358 // should be disentangled, but going to ignore it for now
00359 // E r (c/d)
00360 // 2.25 0
00361 // 2.75 0
00362 // 3.25 0
00363 // 3.75 1.05014
00364 // 4.25 1.0897
00365 // 4.75 1.05697
00366 // 5.25 1.07126
00367 // 5.75 1.09773
00368 // 6.25 1.13736
00369 // 6.75 1.19135
00370 // 7.25 1.23808
00371 // 7.75 1.27554
00372 // 8.25 1.30237
00373 // 8.75 1.32485
00374 // 9.25 1.34172
00375 // 9.75 1.35351
00376 // 10.25 1.36185
00377 // 10.75 1.36765
00378 // 11.25 1.37102
00379 // 11.75 1.37229
00380 if(sel == Selection::kCC) return 1;
00381
00382 if(int(val+0.5)==1) {
00383 //weight based on ratio of N(F)D_daikon/N(F)D_carrot
00384
00385 const int NSEL = 10;
00386 static vector<TH1D*> ND_NC;
00387 static vector<TH1D*> ND_NUMU;
00388 static vector<TH1D*> ND_BNUE;
00389
00390 static vector<TH1D*> FD_NC;
00391 static vector<TH1D*> FD_NUMU;
00392 static vector<TH1D*> FD_BNUE;
00393 static vector<TH1D*> FD_NUE;
00394 static vector<TH1D*> FD_NUTAU;
00395
00396 if(ND_NC.size() == 0){
00397
00398 for(int i = 0; i < NSEL; i++){
00399 TH1D* dum = 0;
00400 ND_NC.push_back(dum);
00401 ND_NUMU.push_back(dum);
00402 ND_BNUE.push_back(dum);
00403 FD_NC.push_back(dum);
00404 FD_NUMU.push_back(dum);
00405 FD_BNUE.push_back(dum);
00406 FD_NUE.push_back(dum);
00407 FD_NUTAU.push_back(dum);
00408 }
00409
00410 const int NDET = 2;
00411 const int NUC = 5;
00412 const int NCUT = 4;
00413 string det[2] = {"Near", "Far"};
00414 string nuC[5] = {"numu", "nc", "bnue", "nue", "nutau"};
00415 // string cut[4] = {"2", "6", "8", "7"};
00416 string name[NCUT] = {"Fid", "Presel", "ANN", "SSPID"};
00417
00418 TFile Input("NueAna/data/CarrotDaikonWeights.root", "READ");
00419 TH1D* temp;
00420 TH1D* temp2;
00421
00422 for(int i = 0; i < NDET; i++){
00423 for(int j = 0; j < NUC; j++){
00424 if(i < 1 && j >= 3) continue;
00425 for(int k = 0; k < NCUT; k++){
00426 TString id = det[i]+nuC[j]+name[k];
00427 Input.GetObject(id, temp);
00428 if(temp != 0){
00429 temp2 = (TH1D*) temp->Clone("ratio");
00430 temp2->SetDirectory(0);
00431
00432 int iSel = (int) Selection::StringToEnum(name[k].c_str());
00433
00434 if(i+1 ==Detector::kFar ){
00435 if(j==1) FD_NC[iSel] = temp2;
00436 if(j==0) FD_NUMU[iSel] = temp2;
00437 if(j==4) FD_NUTAU[iSel] = temp2;
00438 if(j==2) FD_BNUE[iSel] = temp2;
00439 if(j==3) FD_NUE[iSel] = temp2;
00440 }
00441 if(i+1 ==Detector::kNear ){
00442 if(j==1) ND_NC[iSel] = temp2;
00443 if(j==0) ND_NUMU[iSel] = temp2;
00444 if(j==2) ND_BNUE[iSel] = temp2;
00445 }
00446 }
00447 else
00448 cout<<"Unable to Load: "<<id<<endl;
00449 }
00450 }
00451 }
00452 }
00453
00454 Background::Background_t bg =
00455 Background::TranslateFromMC(record->mctrue.interactionType,
00456 record->mctrue.nuFlavor,
00457 record->mctrue.nonOscNuFlavor);
00458
00459 Double_t recoEnergy = record->srevent.phNueGeV;
00460
00461 TH1D* temp = 0;
00462 int iSel = (int) sel;
00463
00464 if(record->GetHeader().GetVldContext().GetDetector()==Detector::kFar){
00465 if(bg==Background::kNC) temp = FD_NC[iSel];
00466 if(bg==Background::kNuMuCC) temp = FD_NUMU[iSel];
00467 if(bg==Background::kNuTauCC) temp = FD_NUTAU[iSel];
00468 if(bg==Background::kBNueCC) temp = FD_BNUE[iSel];
00469 if(bg==Background::kNueCC) temp = FD_NUE[iSel];
00470 }
00471 if(record->GetHeader().GetVldContext().GetDetector()==Detector::kNear){
00472 if(bg==Background::kNC) temp = ND_NC[iSel];
00473 if(bg==Background::kNuMuCC) temp = ND_NUMU[iSel];
00474 if(bg==Background::kBNueCC) temp = ND_BNUE[iSel];
00475 }
00476
00477 if(temp == 0) cout<<"Massive loading error "<<bg<<" "<<record->GetHeader().GetVldContext().GetDetector()<<endl;
00478 for(int i=0;i<temp->GetNbinsX();i++){
00479 if(recoEnergy>=temp->GetBinLowEdge(i) && recoEnergy< temp->GetBinLowEdge(i+1)) {
00480 return temp->GetBinContent(i);
00481 }
00482 }
00483
00484 return 1;
00485 }
00486 if(int(val+0.5)==2){
00487 //weight using MODBYRS4
00488 Double_t weight = this->DoNeugenCalc(record,Systematic::kShwDev,4);
00489 if(record->xsecweights.xsecweight>0) weight/=record->xsecweights.xsecweight;
00490 return weight;
00491 }
00492 if(int(val+0.5)==3){
00493 //weight based on piZero energy reweighting (carrot->daikon)
00494 Double_t piZeroEnergy[8] = {0.0,0.75,1.5,2.25,3.0,3.75,4.5,100};
00495 Double_t weight[8] = {1.19675,1.06378,2.00025,1.91159,
00496 1.61631,1.2359,1.84444,1.00};
00497 Double_t pi0E = record->shi.epi0;
00498 for(int i=0;i<7;i++){
00499 if(pi0E>=piZeroEnergy[i] && pi0E<piZeroEnergy[i+1])
00500 return weight[i];
00501 }
00502 }
00503 return 1;
00504 }
|
|
||||||||||||
|
Definition at line 284 of file NueSystematic.cxx. References det, NueRecord::fluxweights, VldContext::GetDetector(), SKZPWeightCalculator::GetFluxError(), RecRecordImp< T >::GetHeader(), RecHeader::GetVldContext(), NueRecord::mctrue, ANtpTruthInfoBeam::nonOscNuFlavor, ANtpTruthInfo::nuEnergy, ANtpTruthInfo::nuFlavor, skzp, and NueFluxWeights::totskzpweight. Referenced by UpdateRecord(). 00285 {
00286 // val < -999 -> unweight to base MC (use -1000)
00287 // val == 0 -> Do nothing - > standard SKZP
00288 // val > 0 -> distort spectrum by val*1sigma change
00289 double baseweight = record->fluxweights.totskzpweight;
00290 if(val < -999){
00291 if(baseweight <= 0) return 0;
00292 else return 1.0/baseweight;
00293 }
00294 else{
00295 if(val != 0 ) {
00296 if(record->mctrue.nuFlavor<-9998) return 1;
00297 float energy = record->mctrue.nuEnergy;
00298 int inu = record->mctrue.nonOscNuFlavor;
00299
00300 Detector::Detector_t det = record->GetHeader().GetVldContext().GetDetector();
00301 //the 2 here is the IBEAM value of L010185
00302 // so for numu/antinumu we have the whole envelope
00303 // for nue we have the HadPrd + 1.77% envelope from Bob and Masaki
00304 // error returned here is the weight to change the spectrum up by 1 sigma
00305
00306 double err = 1.0;
00307
00308 if(TMath::Abs(inu) == 14){
00309 err = skzp->GetFluxError(det,2,inu,energy,SKZPWeightCalculator::kTotalErrorAfterTune);
00310 err -= 1.0;
00311 }
00312 if(TMath::Abs(inu) == 12){
00313 err = skzp->GetFluxError(det,2,inu,energy,SKZPWeightCalculator::kHadProdAfterTune);
00314 err = TMath::Sqrt((err - 1)*(err - 1) + 0.0177*0.0177);
00315 }
00316
00317 double weight = 1.0 + err*val;
00318
00319 return weight;
00320 }
00321 }
00322
00323 return 1;
00324 }
|
|
||||||||||||
|
Definition at line 617 of file NueSystematic.cxx. References ANtpTruthInfo::interactionType, NueRecord::mctrue, ANtpTruthInfo::nuFlavor, and ANtpTruthInfoBeam::resonanceCode. Referenced by GetAppearanceWeight(), and UpdateRecord(). 00618 {
00619 //Correspondance with Hugh G. on 1/23/2008
00620 //use 50% for QEl, RES, but 10% for DIS
00621 double scale = 0.5;
00622
00623 if(record->mctrue.interactionType==1 &&
00624 TMath::Abs(record->mctrue.nuFlavor)==16){
00625
00626 if(record->mctrue.resonanceCode == 1001) scale = 0.5;
00627 if(record->mctrue.resonanceCode == 1002) scale = 0.5;
00628 if(record->mctrue.resonanceCode == 1003) scale = 0.1;
00629 return 1 + scale*val;
00630 }
00631 return 1;
00632 }
|
|
||||||||||||
|
Definition at line 258 of file NueSystematic.cxx. References DoOscCalc(), DoTauProd(), fSysList, NueRecord::mctrue, ANtpTruthInfoBeam::nonOscNuFlavor, ANtpTruthInfo::nuFlavor, and ANtpTruthInfoBeam::resonanceCode. Referenced by NueExtrapolationJB::BuildAppTrueHistFast(), NueExtrapolationJB::CreateOscHist(), and UpdateRecord(). 00259 {
00260 if(bg == Background::kNueCC || bg == Background::kNuTauCC) rec->mctrue.nonOscNuFlavor = 14;
00261 if(bg == Background::kNueCC) rec->mctrue.nuFlavor = 12;
00262 if(bg == Background::kNuTauCC) rec->mctrue.nuFlavor = 16;
00263 if(bg == Background::kNuTauCC) rec->mctrue.resonanceCode = 1001;
00264 if(rec->mctrue.nonOscNuFlavor < 0) rec->mctrue.nuFlavor *= -1;
00265 std::map<Systematic::Systematic_t,Double_t>::iterator beg = fSysList.begin();
00266 std::map<Systematic::Systematic_t,Double_t>::iterator end = fSysList.end();
00267
00268 double totWeight = 1.0;
00269
00270 while (beg!=end) {
00271 Systematic::Systematic_t sys = beg->first;
00272 Double_t val = beg->second;
00273 switch (sys) {
00274 case Systematic::kOscProb : totWeight *= this->DoOscCalc(rec,val); break;
00275 case Systematic::kTauProd : totWeight *= this->DoTauProd(rec,val); break;
00276 default: break;
00277 }
00278 beg++;
00279 }
00280
00281 return totWeight;
00282 }
|
|
|
Definition at line 29 of file NueSystematic.h. Referenced by NueMatrixHelper::AddNueSystematic(), NueFNHelper::AddNueSystematic(), JBComparator::DrawPrediction(), Comparator::DrawPrediction(), JBComparator::DrawRatio(), Comparator::DrawRatio(), Comparator::GetPredictions(), and NueExtrapolationJB::WriteToFile(). 00029 {return fName;}
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 89 of file NueSystematic.cxx. References fDeltaCP, fDeltaMSq12, fDeltaMSq23, fMassHierarchy, fOscCalc, fTheta12, fTheta13, fTheta23, and OscCalc::GetOscParam(). Referenced by JBComparator::DrawIntegral(), Comparator::DrawIntegral(), JBComparator::DrawPrediction(), Comparator::DrawPrediction(), JBComparator::DrawRatio(), Comparator::DrawRatio(), and NueExtrapolationJB::RunExtrapStudy(). 00092 {
00093 fTheta12 = theta12; fTheta23 = theta23; fTheta13 = theta13;
00094 fDeltaMSq12 = deltam12; fDeltaMSq23 = deltam23;
00095 fDeltaCP = deltaCP; fMassHierarchy = massH;
00096
00097 Double_t par[10];
00098 fOscCalc.GetOscParam(par);
00099
00100 par[OscPar::kL] = 735.0;
00101 theta23 = par[OscPar::kTh23];
00102 theta12 = par[OscPar::kTh12];
00103 theta13 = par[OscPar::kTh13];
00104 deltam23 = par[OscPar::kDeltaM23];
00105 deltam12 = par[OscPar::kDeltaM12];
00106 deltaCP = par[OscPar::kDelta];
00107
00108 massH = 1;
00109 if(deltam23 < 0){ massH = -1; deltam23 = -deltam23;}
00110 }
|
|
|
Definition at line 56 of file NueSystematic.cxx. 00057 {
00058 return skzpcfg;
00059 }
|
|
|
Definition at line 112 of file NueSystematic.cxx. References fSysList, and Systematic::GetDefaultValue(). Referenced by JBComparator::DrawIntegral(), Comparator::DrawIntegral(), JBComparator::DrawPrediction(), Comparator::DrawPrediction(), JBComparator::DrawRatio(), Comparator::DrawRatio(), NueExtrapolationJB::PrepareExtrapHistograms(), and UpdateRecord(). 00113 {
00114 std::map<Systematic::Systematic_t,Double_t>::iterator beg = fSysList.begin();
00115 std::map<Systematic::Systematic_t,Double_t>::iterator end = fSysList.end();
00116 while (beg!=end) {
00117 if(beg->first==sys) return beg->second;
00118 beg++;
00119 }
00120 return Systematic::GetDefaultValue(sys);
00121 }
|
|
|
Definition at line 33 of file NueSystematic.cxx. References fDeltaCP, fDeltaMSq12, fDeltaMSq23, fMassHierarchy, fTheta12, fTheta13, fTheta23, skzp, and skzpcfg. Referenced by NueSystematic(). 00034 {
00035 fTheta12 = 0.59365;
00036 fTheta23 = 0.785398;
00037 fTheta13 = 0.19885;
00038
00039 fDeltaMSq12 = 8.0e-5;
00040 fDeltaMSq23 = 2.43e-3;
00041
00042 fDeltaCP = 0;
00043 fMassHierarchy = 1;
00044
00045 if(skzp == 0){
00046 skzp = new SKZPWeightCalculator(skzpcfg, true);
00047 }
00048
00049 }
|
|
|
Definition at line 670 of file NueSystematic.cxx. References fDeltaCP, fDeltaMSq12, fDeltaMSq23, fMassHierarchy, fName, fSysList, fTempDouble, fTheta12, fTheta13, and fTheta23. Referenced by NueExtrapolationJB::WriteToFile(). 00671 {
00672 TBranch *branch = 0;
00673 if((branch = tree->GetBranch("SysName"))) branch->SetAddress(fName);
00674 else tree->Branch("SysName",fName,"SysName/C");
00675
00676 std::map<Systematic::Systematic_t,Double_t>::iterator beg = fSysList.begin();
00677 std::map<Systematic::Systematic_t,Double_t>::iterator end = fSysList.end();
00678 Int_t max_sys_index = 0;
00679 while(strcmp(Systematic::AsString(Systematic::ESystematic(max_sys_index)),
00680 "?Unknown?")!=0) {
00681 //std::cout << max_sys_index << " "
00682 // << Systematic::AsString(Systematic::ESystematic(max_sys_index))
00683 // << std::endl;
00684 if (beg!=end && beg->first==max_sys_index) {
00685 //first check if branch already exists:
00686 if((branch = tree->GetBranch(Systematic::AsString(beg->first)))) {
00687 branch->SetAddress(&(beg->second));
00688 }
00689 else {
00690 char leafname[256]; sprintf(leafname,"%s/D",Systematic::AsString(beg->first));
00691 tree->Branch(Systematic::AsString(beg->first),&(beg->second),leafname);
00692 }
00693 beg++;
00694 }
00695 else {
00696 if((branch =
00697 tree->GetBranch(Systematic::AsString(Systematic::ESystematic(max_sys_index))))) {
00698 branch->SetAddress(&fTempDouble);
00699 }
00700 else {
00701 char leafname[256];
00702 sprintf(leafname,"%s/D",
00703 Systematic::AsString(Systematic::ESystematic(max_sys_index)));
00704 tree->Branch(Systematic::AsString(Systematic::ESystematic(max_sys_index)),
00705 &fTempDouble,leafname);
00706 }
00707 }
00708 max_sys_index++;
00709 }
00710
00711 if((branch = tree->GetBranch("Theta12"))) branch->SetAddress(&fTheta12);
00712 else tree->Branch("Theta12",&fTheta12,"Theta12/D");
00713 if((branch = tree->GetBranch("Theta23"))) branch->SetAddress(&fTheta23);
00714 else tree->Branch("Theta23",&fTheta23,"Theta23/D");
00715 if((branch = tree->GetBranch("Theta13"))) branch->SetAddress(&fTheta13);
00716 else tree->Branch("Theta13",&fTheta13,"Theta13/D");
00717 if((branch = tree->GetBranch("DeltaMSq23"))) branch->SetAddress(&fDeltaMSq23);
00718 else tree->Branch("DeltaMSq23",&fDeltaMSq23,"DeltaMSq23/D");
00719 if((branch = tree->GetBranch("DeltaMSq12"))) branch->SetAddress(&fDeltaMSq12);
00720 else tree->Branch("DeltaMSq12",&fDeltaMSq12,"DeltaMSq12/D");
00721 if((branch = tree->GetBranch("DeltaCP"))) branch->SetAddress(&fDeltaCP);
00722 else tree->Branch("DeltaCP",&fDeltaCP,"DeltaCP/D");
00723 if((branch = tree->GetBranch("MassHierarchy"))) branch->SetAddress(&fMassHierarchy);
00724 else tree->Branch("MassHierarchy",&fMassHierarchy,"MassHierarchy/I");
00725 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 61 of file NueSystematic.cxx. References fDeltaCP, fDeltaMSq12, fDeltaMSq23, fMassHierarchy, fOscCalc, fTheta12, fTheta13, fTheta23, and OscCalc::SetOscParam(). 00064 {
00065 fTheta12 = theta12; fTheta23 = theta23; fTheta13 = theta13;
00066 fDeltaMSq12 = deltam12; fDeltaMSq23 = deltam23;
00067 fDeltaCP = deltaCP; fMassHierarchy = massH;
00068
00069 Double_t par[9] = {0};
00070 par[OscPar::kL] = 735.0;
00071 par[OscPar::kTh23] = fTheta23;
00072 par[OscPar::kTh12] = fTheta12;
00073 par[OscPar::kTh13] = fTheta13; // TMath::ASin(TMath::Sqrt(ss2th13))/2.;
00074 par[OscPar::kDeltaM23] = massH*fDeltaMSq23;
00075 par[OscPar::kDeltaM12] = fDeltaMSq12;
00076 par[OscPar::kDensity] = 2.75; //standard rock density
00077 par[OscPar::kDelta] = deltaCP;
00078 par[OscPar::kNuAntiNu] = 1;
00079 fOscCalc.SetOscParam(par);
00080 }
|
|
|
Definition at line 82 of file NueSystematic.cxx. References fOscCalc, and OscCalc::SetOscParam(). Referenced by NueFNExtrapolation::GetCurrentSystematic(), JBComparator::GetPredictions(), and NueExtrapolationJB::MakeDataHistograms(). 00083 {
00084
00085 fOscCalc.SetOscParam(par);
00086 }
|
|
|
Definition at line 51 of file NueSystematic.cxx. References skzpcfg. 00052 {
00053 skzpcfg = cfg;
00054 }
|
|
||||||||||||
|
Definition at line 123 of file NueSystematic.cxx. References fSysList. Referenced by NueExtrapolationJB::PrepareExtrapHistograms(), and UpdateRecord(). 00124 {
00125 std::map<Systematic::Systematic_t,Double_t>::iterator beg = fSysList.begin();
00126 std::map<Systematic::Systematic_t,Double_t>::iterator end = fSysList.end();
00127
00128 while (beg!=end) {
00129 if(beg->first==sys){ beg->second = val; return; }
00130 beg++;
00131 }
00132 }
|
|
||||||||||||||||
|
Definition at line 191 of file NueSystematic.cxx. References NueRecord::ann, DoCalibShift(), DoCCShwEnergyScale(), DoNCScale(), DoNeugenCalc(), DoNormCalc(), DoOscCalc(), DoPIDSkew(), DoShwDevCalc(), DoSKZPCalc(), DoTauProd(), ANtpTrackInfo::endPlane, NueRecord::fluxweights, fSysList, GetAppearanceWeight(), GetSysValue(), MCNNVars::mcnn_var1, NueRecord::mcnnv, ANtpShowerInfoNue::phCCGeV, ANtpEventInfoNue::phNueGeV, SubShowerVar::pid, Ann::pid_11inp, Ann::pid_11inp_daikon04, Ann::pid_30inp, Ann::pid_6inp, SetSysValue(), NueRecord::srevent, NueRecord::srshower, NueRecord::srtrack, NueRecord::subshowervars, NueFluxWeights::totbeamweight, and ANtpTrackInfoNue::trklikePlanes. 00193 {
00194 Double_t totWeight = 1;
00195 Double_t enShift = 0;
00196 Double_t pidShift = 0;
00197 Double_t trkLength = 0;
00198 Double_t trkLike = 0;
00199 double shwEnShift = 0;
00200
00201 //Need to Turn off oscillatons
00202 Double_t OscSysVal = this->GetSysValue(Systematic::kOscProb);
00203 this->SetSysValue(Systematic::kOscProb, 0);
00204
00205 std::map<Systematic::Systematic_t,Double_t>::iterator beg = fSysList.begin();
00206 std::map<Systematic::Systematic_t,Double_t>::iterator end = fSysList.end();
00207 while (beg!=end) {
00208 Systematic::Systematic_t sys = beg->first;
00209 Double_t val = beg->second;
00210 switch (sys) {
00211 case Systematic::kNorm : totWeight *= this->DoNormCalc(rec,val);
00212 case Systematic::kEMCalib : enShift += this->DoCalibShift(rec,sys,val); break;
00213 case Systematic::kHadCalib : enShift += this->DoCalibShift(rec,sys,val); break;
00214 case Systematic::kRelCalib : enShift += this->DoCalibShift(rec,sys,val); break;
00215 case Systematic::kMA_QE : totWeight *= this->DoNeugenCalc(rec,sys,val);
00216 break;
00217 case Systematic::kMA_RES : totWeight *= this->DoNeugenCalc(rec,sys,val);
00218 break;
00219 case Systematic::kKNO : totWeight *= this->DoNeugenCalc(rec,sys,val); break;
00220 case Systematic::kTrkLike : trkLike += val; break;
00221 case Systematic::kTrkPlane : trkLength += val; break;
00222 case Systematic::kPIDShift : pidShift += val; break;
00223 case Systematic::kSKZP : totWeight *= this->DoSKZPCalc(rec,val); break;
00224 case Systematic::kOscProb : totWeight *= this->DoOscCalc(rec,val); break;
00225 case Systematic::kShwDev : totWeight *= this->DoShwDevCalc(rec,val,sel); break;
00226 case Systematic::kTauProd : totWeight *= this->DoTauProd(rec,val); break;
00227 case Systematic::kPIDSkew : totWeight *= this->DoPIDSkew(rec,val,sel); break;
00228 case Systematic::kNCScale : totWeight *= this->DoNCScale(rec,val, sel); break;
00229 case Systematic::kCCShwE : shwEnShift += this->DoCCShwEnergyScale(rec,val,sel); break;
00230 default: break;
00231 }
00232 beg++;
00233 }
00234
00235 this->SetSysValue(Systematic::kOscProb, OscSysVal);
00236
00237 totWeight *= this->GetAppearanceWeight(rec, bg);
00238
00239 rec->srevent.phNueGeV *= 1+enShift;
00240 rec->srshower.phCCGeV *= 1+shwEnShift;
00241 rec->subshowervars.pid += pidShift;
00242 rec->ann.pid_30inp += pidShift;
00243 rec->ann.pid_6inp += pidShift;
00244 rec->ann.pid_11inp += pidShift;
00245 rec->ann.pid_11inp_daikon04 += pidShift;
00246 rec->mcnnv.mcnn_var1 += pidShift;
00247
00248 // rec->mdadiscrim.fMdaPIDnue += pidShift;
00249 // rec->fracvars.pid += pidShift;
00250 // rec->fracvars.pid1 += pidShift;
00251 rec->srtrack.endPlane += Int_t(trkLength);
00252 rec->srtrack.trklikePlanes += Int_t(trkLike);
00253
00254 return totWeight*rec->fluxweights.totbeamweight;
00255 }
|
|
||||||||||||
|
Definition at line 134 of file NueSystematic.cxx. References NueRecord::ann, DoCalibShift(), DoCCShwEnergyScale(), DoNCScale(), DoNeugenCalc(), DoNormCalc(), DoOscCalc(), DoPIDSkew(), DoShwDevCalc(), DoSKZPCalc(), DoTauProd(), ANtpTrackInfo::endPlane, NueRecord::fluxweights, fSysList, MCNNVars::mcnn_var1, NueRecord::mcnnv, ANtpShowerInfoNue::phCCGeV, ANtpEventInfoNue::phNueGeV, SubShowerVar::pid, Ann::pid_11inp, Ann::pid_11inp_daikon04, Ann::pid_30inp, Ann::pid_6inp, NueRecord::srevent, NueRecord::srshower, NueRecord::srtrack, NueRecord::subshowervars, NueFluxWeights::totbeamweight, and ANtpTrackInfoNue::trklikePlanes. Referenced by NueExtrapolationJB::BuildAppTrueHistExact(), NueExtrapolationJB::MakeDataHistograms(), and NueExtrapolationJB::PrepareExtrapHistograms(). 00135 {
00136 Double_t totWeight = 1;
00137 Double_t enShift = 0;
00138 Double_t pidShift = 0;
00139 Double_t trkLength = 0;
00140 Double_t trkLike = 0;
00141 double shwEnShift = 0;
00142
00143 std::map<Systematic::Systematic_t,Double_t>::iterator beg = fSysList.begin();
00144 std::map<Systematic::Systematic_t,Double_t>::iterator end = fSysList.end();
00145 while (beg!=end) {
00146 Systematic::Systematic_t sys = beg->first;
00147 Double_t val = beg->second;
00148 switch (sys) {
00149 case Systematic::kNorm : totWeight *= this->DoNormCalc(rec,val);
00150 case Systematic::kEMCalib : enShift += this->DoCalibShift(rec,sys,val); break;
00151 case Systematic::kHadCalib : enShift += this->DoCalibShift(rec,sys,val); break;
00152 case Systematic::kRelCalib : enShift += this->DoCalibShift(rec,sys,val); break;
00153 case Systematic::kMA_QE : totWeight *= this->DoNeugenCalc(rec,sys,val); break;
00154 case Systematic::kMA_RES : totWeight *= this->DoNeugenCalc(rec,sys,val); break;
00155 case Systematic::kKNO : totWeight *= this->DoNeugenCalc(rec,sys,val); break;
00156 case Systematic::kTrkLike : trkLike += val; break;
00157 case Systematic::kTrkPlane : trkLength += val; break;
00158 case Systematic::kPIDShift : pidShift += val; break;
00159 case Systematic::kSKZP : totWeight *= this->DoSKZPCalc(rec,val); break;
00160 case Systematic::kOscProb : totWeight *= this->DoOscCalc(rec,val); break;
00161 case Systematic::kShwDev : totWeight *= this->DoShwDevCalc(rec,val,sel); break;
00162 case Systematic::kTauProd : totWeight *= this->DoTauProd(rec,val); break;
00163 case Systematic::kPIDSkew : totWeight *= this->DoPIDSkew(rec,val,sel); break;
00164 case Systematic::kNCScale : totWeight *= this->DoNCScale(rec,val, sel); break;
00165 case Systematic::kCCShwE : shwEnShift += this->DoCCShwEnergyScale(rec,val,sel); break;
00166 default: break;
00167 }
00168 beg++;
00169 // std::cout<<Systematic::AsString(sys)<<" "<<val<<" "<<totWeight<<std::endl;
00170 }
00171
00172 rec->srevent.phNueGeV *= 1+enShift;
00173 rec->srshower.phCCGeV *= 1+shwEnShift;
00174
00175 rec->subshowervars.pid += pidShift;
00176 rec->ann.pid_30inp += pidShift;
00177 rec->ann.pid_6inp += pidShift;
00178 rec->ann.pid_11inp += pidShift;
00179 rec->ann.pid_11inp_daikon04 += pidShift;
00180 rec->mcnnv.mcnn_var1 += pidShift;
00181
00182 // rec->mdadiscrim.fMdaPIDnue += pidShift;
00183 // rec->fracvars.pid += pidShift;
00184 // rec->fracvars.pid1 += pidShift;
00185 rec->srtrack.endPlane += Int_t(trkLength);
00186 rec->srtrack.trklikePlanes += Int_t(trkLike);
00187
00188 return totWeight*rec->fluxweights.totbeamweight;
00189 }
|
|
|
Definition at line 78 of file NueSystematic.h. Referenced by GetOscParams(), Init(), MakeBranches(), and SetOscParams(). |
|
|
Definition at line 77 of file NueSystematic.h. Referenced by GetOscParams(), Init(), MakeBranches(), and SetOscParams(). |
|
|
Definition at line 76 of file NueSystematic.h. Referenced by GetOscParams(), Init(), MakeBranches(), and SetOscParams(). |
|
|
Definition at line 79 of file NueSystematic.h. Referenced by GetOscParams(), Init(), MakeBranches(), and SetOscParams(). |
|
|
Definition at line 60 of file NueSystematic.h. Referenced by MakeBranches(), and NueSystematic(). |
|
|
Definition at line 82 of file NueSystematic.h. Referenced by DoOscCalc(), GetOscParams(), and SetOscParams(). |
|
|
Definition at line 67 of file NueSystematic.h. Referenced by GetAppearanceWeight(), GetSysValue(), MakeBranches(), SetSysValue(), UpdateRecord(), and ~NueSystematic(). |
|
|
Definition at line 80 of file NueSystematic.h. Referenced by MakeBranches(). |
|
|
Definition at line 75 of file NueSystematic.h. Referenced by GetOscParams(), Init(), MakeBranches(), and SetOscParams(). |
|
|
Definition at line 74 of file NueSystematic.h. Referenced by DoOscCalc(), GetOscParams(), Init(), MakeBranches(), and SetOscParams(). |
|
|
Definition at line 73 of file NueSystematic.h. Referenced by GetOscParams(), Init(), MakeBranches(), and SetOscParams(). |
|
|
Definition at line 15 of file NueSystematic.cxx. Referenced by DoSKZPCalc(), and Init(). |
|
|
Definition at line 71 of file NueSystematic.h. Referenced by Init(), and SetSKZPParams(). |
1.3.9.1