kNoCalGroup = Nothing
Notes: The currently implemented corrections are: i) 1.8% FD data correction for PRL era data ii) The MC drift bug correction for Cedar MC iii) The preliminary data and MC fudge factors that tweak the MEU scale. The numbers are taken from DocDB 3139 by Jeff Hartnell and Tingjun Yang
Further notes: This routine uses the Calibrator, and requires read access to the offline database. At present, any up-to-date database will do. Note that this routine initializes a custom Calibrator on the first call; it should not interfere with other Calibrators you may be using.
|
|
Referenced by VersionFromFilename(). |
|
|
|
|
|
Definition at line 375 of file DataUtil/EnergyCorrections.h. 00375 {
00376 kUnknown,
00377 kBirch,
00378 kCedar,
00379 kDogwood
00380 } CorrectionVersion_t;
|
|
|
Definition at line 235 of file DataUtil/EnergyCorrections.h. 00235 {
00236 kDefault = 0,
00237 kVersion1,
00238 kVersion2,
00239 kVersion3,
00240 kVersion4,
00241 kVersion5,
00242 kVersion6,
00243 kNoCalGroup
00244 } WhichCorrection_t;
|
|
||||||||||||||||||||
|
Definition at line 372 of file DataUtil/EnergyCorrections.cxx. References ReleaseType::AsString(), Calibrator::CreateCustomCalibrator(), VldContext::GetDetector(), Calibrator::GetDriftCorrected(), ReleaseType::GetRecoInfo(), VldContext::GetSimFlag(), MsgService::GetStream(), MsgService::Instance(), ReleaseType::IsBirch(), ReleaseType::IsCedar(), ReleaseType::IsDaikon(), MAXMSG, CalScheme::Reset(), CfgPromptConfigurable::Set(), and MsgStream::SetLogLevel(). Referenced by CorrectionsForMasaki::CalibratedShowerEnergy(), MeuPlots::CalibrationGroupEnergyCorrections(), and FullyCorrectShowerEnergy(). 00376 {
00377 //Nb: This function is called by FullyCorrectShowerEnergy, do not use it for CC Shower's
00378
00379 float retval = E; // Default return value.
00380
00381 MAXMSG("DataUtil",Msg::kInfo,1)
00382 << "CalibrationGroupEnergyCorrections:: Using Release Type: "
00383 << ReleaseType::AsString(release) << "\tusing correction version: "
00384 << whichCor << "\n";
00385
00386 static Calibrator* customCalibrator = 0;
00387 if (customCalibrator ==0 ) {
00388 //Initialize. Disable warning that we're about to do something 'tricksy'.
00389 // This tricksyness is just to make a custom instance of the calibrator, so we don't
00390 // interfere with any other custom settings that the user (i.e. Jeff H) is doing
00391 // This is actually pretty safe, if an expert like me (Nathaniel) does it.
00392 MsgService::Instance()->GetStream("Calib")->SetLogLevel(Msg::kFatal);
00393 customCalibrator = Calibrator::CreateCustomCalibrator();
00394
00395 // Turn off the units we aren't using, just to make them go faster.
00396 // "Speed holes!" -Homer Simpson
00397
00398 customCalibrator->Set("Thermometer=SimpleCalScheme "
00399 "PeCalibrator=SimpleCalScheme "
00400 "LinCalibrator=SimpleCalScheme "
00401 "StripCalibrator=SimpleCalScheme "
00402 "AttenCalibrator=SimpleCalScheme "
00403 "MIPCalibrator=SimpleCalScheme "
00404 "TimeCalibrator=SimpleCalScheme ");
00405 MsgService::Instance()->GetStream("Calib")->SetLogLevel(Msg::kWarning);
00406 }
00407
00408
00409
00410 // Get the reconstruction version.
00411 ReleaseType::Release_t recoVers = ReleaseType::GetRecoInfo(release);
00412
00413 // Fudge #0:
00414 // For PRL-era data, we fudged the FD data by 1.8%
00415 if ( ReleaseType::IsBirch(release)
00416 && vc.GetSimFlag()==SimFlag::kData
00417 && vc.GetDetector()==Detector::kFar )
00418 {
00419 MAXMSG("DataUtil",Msg::kInfo,1)
00420 << "EnergyCorrections -- Applying Birch Far Detector Factor ( "
00421 << EnergyCorrections::cgffBirchDataFD << ")\n";
00422 retval = retval*EnergyCorrections::cgffBirchDataFD;
00423 }
00424
00425
00426
00427 if (ReleaseType::IsCedar(release) && whichCor!=EnergyCorrections::kNoCalGroup) {
00428 //
00429 // Fudge #1
00430 // Attempt to remove the MC bug, where the drift decalibration was applied with the wrong sign.
00431 // This is a time-dependent correction which should fix the problem for cedar-daikon MC R1.24.1
00432 // This problem was fixed in R1.24.2 and R1.24.calB, but NOT R1.24.calA.
00433 //
00434 if ( ReleaseType::IsCedar(release)
00435 && ReleaseType::IsDaikon(release)
00436 && (recoVers < ReleaseType::kR1_24_2 || recoVers == ReleaseType::kR1_24_Cal )
00437 && vc.GetSimFlag()==SimFlag::kMC)
00438 {
00439 // Removes MC bug where drift correction was applied twice.
00440 // Fix it by de-applying the drift twice.
00441 MAXMSG("DataUtil",Msg::kInfo,1)
00442 << "EnergyCorrections -- Applying Infamous MC Drift Bug Correction\n";
00443
00444 customCalibrator->Reset(vc);
00445 float drift = customCalibrator->GetDriftCorrected(1.0,PlexStripEndId());
00446 retval = retval / (drift*drift);
00447 }
00448
00449
00450 // Correction #2
00451 // These are the preliminary final corrections for the June 2007 cc box opening.
00452 // The numbers are taken from DocDB 3139 by Jeff Hartnell and Tingjun Yang
00453 // These are only applied if using the default (or version3) correction
00454 if (!(whichCor==EnergyCorrections::kVersion1 || whichCor==EnergyCorrections::kVersion2)) {
00455
00456 if (vc.GetSimFlag()==SimFlag::kMC) {
00457 //For the Cedar MC we have the following possible datasets:
00458 // i) CedarDaikon -- used in Summer analysis 2007
00459 // ii) CedarPhyDaikon -- reprocessed by batch group over summer 2007
00460
00461 if (ReleaseType::IsCedar(release) && recoVers<=ReleaseType::kR1_24_1) {
00462 //Now here we have two options either use the latest greatest numbers
00463 // or we use the old numbers from the 2007 summer analysis
00464 if (whichCor==kVersion3) {
00465 //Use the old numbers
00466 if (vc.GetDetector()==Detector::kFar) {
00467 MAXMSG("DataUtil",Msg::kInfo,1)
00468 << "EnergyCorrections -- Applying R_1_24_1 (Summer 2007) Far MC Correction Factor"
00469 << " (" << EnergyCorrections::cgffCedarR1_24_1MCFDOld << ")\n";
00470 retval*=EnergyCorrections::cgffCedarR1_24_1MCFDOld;
00471 }
00472 else if (vc.GetDetector()==Detector::kNear) {
00473 MAXMSG("DataUtil",Msg::kInfo,1)
00474 << "EnergyCorrections -- Applying R_1_24_1 (Summer 2007) Near MC Correction Factor"
00475 << " (" << EnergyCorrections::cgffCedarR1_24_1MCNDOld << ")\n";
00476 retval*=EnergyCorrections::cgffCedarR1_24_1MCNDOld;
00477 }
00478 }
00479 else {
00480 //Use the new numbers
00481 if (vc.GetDetector()==Detector::kFar) {
00482 MAXMSG("DataUtil",Msg::kInfo,1)
00483 << "EnergyCorrections -- Applying R_1_24_1 (Fall 2007) Far MC Correction Factor"
00484 << " (" << EnergyCorrections::cgffCedarR1_24_1MCFD << ")\n";
00485 retval*=EnergyCorrections::cgffCedarR1_24_1MCFD;
00486 }
00487 else if (vc.GetDetector()==Detector::kNear) {
00488 MAXMSG("DataUtil",Msg::kInfo,1)
00489 << "EnergyCorrections -- Applying R_1_24_1 (Fall 2007) Near MC Correction Factor"
00490 << " (" << EnergyCorrections::cgffCedarR1_24_1MCND << ")\n";
00491 retval*=EnergyCorrections::cgffCedarR1_24_1MCND;
00492 }
00493
00494 }
00495 }
00496 else if (ReleaseType::IsCedar(release) && recoVers>=ReleaseType::kR1_24_2)
00497 {
00498 //Changed because we updated the GevPerMIP number in the MC
00499 // reprocessing. Bloody annoying.
00500 if (vc.GetDetector()==Detector::kFar) {
00501 MAXMSG("DataUtil",Msg::kInfo,1)
00502 << "EnergyCorrections -- Applying R_1_24_2 (Fall 2007) Far MC Correction Factor"
00503 << " (" << EnergyCorrections::cgffCedarR1_24_2MCFD << ")\n";
00504 retval*=EnergyCorrections::cgffCedarR1_24_2MCFD;
00505 }
00506 else if (vc.GetDetector()==Detector::kNear) {
00507 MAXMSG("DataUtil",Msg::kInfo,1)
00508 << "EnergyCorrections -- Applying R_1_24_2 (Fall 2007) Near MC Correction Factor"
00509 << " (" << EnergyCorrections::cgffCedarR1_24_2MCND << ")\n";
00510 retval*=EnergyCorrections::cgffCedarR1_24_2MCND;
00511 }
00512 }
00513 }
00514 else if (vc.GetSimFlag()==SimFlag::kData) {
00515 //Data corrections only available for Cedar_Phy
00516 //Once again we are going to have the option to use the old or
00517 // the new numbers
00518 if (whichCor==kVersion3) {
00519 //Use the old numbers from the Summer 2007 analysis
00520 if (recoVers>=ReleaseType::kCedarPhy) {
00521 if (vc.GetDetector()==Detector::kFar) {
00522 MAXMSG("DataUtil",Msg::kInfo,1)
00523 << "EnergyCorrections -- Applying CedarPhy (Summer 2007) Far Correction Factor"
00524 << " (" << EnergyCorrections::cgffCedarPhyDataFDOld << ")\n";
00525 retval*=EnergyCorrections::cgffCedarPhyDataFDOld;
00526 }
00527 else if (vc.GetDetector()==Detector::kNear) {
00528 MAXMSG("DataUtil",Msg::kInfo,1)
00529 << "EnergyCorrections -- Applying CedarPhy (Summer 2007) Near Correction Factor"
00530 << " (" << EnergyCorrections::cgffCedarPhyDataNDOld << ")\n";
00531 retval*=EnergyCorrections::cgffCedarPhyDataNDOld;
00532 }
00533 }
00534 }
00535 else {
00536 //Use the latest greatest numbers
00537 if (recoVers>=ReleaseType::kCedarPhy) {
00538 if (vc.GetDetector()==Detector::kFar) {
00539 MAXMSG("DataUtil",Msg::kInfo,1)
00540 << "EnergyCorrections -- Applying CedarPhy (Fall 2007) Far Correction Factor"
00541 << " (" << EnergyCorrections::cgffCedarPhyDataFD << ")\n";
00542 retval*=EnergyCorrections::cgffCedarPhyDataFD;
00543 }
00544 else if (vc.GetDetector()==Detector::kNear) {
00545 MAXMSG("DataUtil",Msg::kInfo,1)
00546 << "EnergyCorrections -- Applying CedarPhy (Fall 2007) Near Correction Factor"
00547 << " (" << EnergyCorrections::cgffCedarPhyDataND << ")\n";
00548 retval*=EnergyCorrections::cgffCedarPhyDataND;
00549 }
00550 }
00551 }
00552 }
00553 }
00554 }
00555
00556 return retval;
00557
00558 }
|
|
||||||||||||||||
|
Definition at line 754 of file DataUtil/EnergyCorrections.cxx. References CorrectMomentumFromRange(), and det. 00755 {
00756 const float m=0.1057;// mon mass
00757 float p = sqrt(E*E -m*m);
00758 float pcor = CorrectMomentumFromRange(p,isdata,det);
00759 return sqrt(pcor*pcor +m*m);
00760 }
|
|
||||||||||||||||
|
Definition at line 711 of file DataUtil/EnergyCorrections.cxx. References CorrectMomentumFromRange_Birch(), CorrectMomentumFromRange_Cedar(), det, and WarnUnknownVersion(). Referenced by CorrectEnergyFromRange(). 00713 {
00714 float pcor=p;
00715 switch(fVersion){
00716 case kCedar:
00717 pcor=CorrectMomentumFromRange_Cedar(p,isdata,det);
00718 break;
00719 case kBirch:
00720 pcor=CorrectMomentumFromRange_Birch(p,isdata,det);
00721 break;
00722 case kUnknown:
00723 default:
00724 WarnUnknownVersion("CorrectMomentumFromRange()");
00725 pcor=CorrectMomentumFromRange_Birch(p,isdata,det);
00726 break;
00727 }
00728 return pcor;
00729 }
|
|
||||||||||||||||
|
Definition at line 843 of file DataUtil/EnergyCorrections.cxx. References det. Referenced by CorrectMomentumFromRange(). 00845 {
00846 static const float c[4]={1.01334,0.05563,-0.05346,0.01205};
00847
00848 // correction for difference in data mc steel density
00849 if (isdata){
00850 // inital correction, pre-Oxford 2006
00851 //static const float dcor=7.755/7.87;// data/mc density
00852 float dcor=1;
00853 if (det==Detector::kNear) dcor=(7.85*2.563)/(7.87*2.54);
00854 else if (det==Detector::kFar) dcor=(7.85*2.558)/(7.87*2.54);
00855
00856 p*=dcor;
00857 }
00858 //
00859 float pcor=p/(c[0] + c[1]*log(p) + c[2]*pow(log(p), 2) + c[3]*pow(log(p),3));
00860 return pcor;
00861 }
|
|
||||||||||||||||
|
Definition at line 936 of file DataUtil/EnergyCorrections.cxx. Referenced by CorrectMomentumFromRange(). 00937 {
00938 return p;
00939 }
|
|
||||||||||||||||||||||||
|
Definition at line 824 of file DataUtil/EnergyCorrections.cxx. References CorrectShowerEnergyFar(), CorrectShowerEnergyNear(), and det. 00828 {
00829 //People should not be using this function
00830 float ecor=E;
00831 if (det==Detector::kNear) {
00832 ecor = CorrectShowerEnergyNear(E,st,mode,isdata);
00833 }
00834 else if (det==Detector::kFar) {
00835 ecor = CorrectShowerEnergyFar(E,st,mode,isdata);
00836 }
00837
00838 return ecor;
00839 }
|
|
||||||||||||||||||||
|
Definition at line 786 of file DataUtil/EnergyCorrections.cxx. References CorrectShowerEnergyFar_Birch(), CorrectShowerEnergyFar_Cedar(), and WarnUnknownVersion(). Referenced by CorrectShowerEnergy(). 00787 {
00788 //People should not be using this function
00789
00790 float ecor=E;
00791 switch(fVersion){
00792 case kCedar:
00793 ecor=CorrectShowerEnergyFar_Cedar(E,st,mode,isdata);
00794 break;
00795 case kBirch:
00796 if (isdata) {
00797 // a correction for the FD MIP scale
00798 // for the beam data, one measured MIP
00799 // actually corresponds to 1.018 MIPs
00800 // so we must correct shower energy up
00801 const float mip_scale_correction=1.018;
00802 E*=mip_scale_correction;
00803 }
00804 ecor=CorrectShowerEnergyFar_Birch(E,st,mode,isdata);
00805 break;
00806 case kUnknown:
00807 default:
00808 WarnUnknownVersion("CorrectShowerEnergyFar()");
00809 if (isdata) {
00810 // a correction for the FD MIP scale
00811 // for the beam data, one measured MIP
00812 // actually corresponds to 1.018 MIPs
00813 // so we must correct shower energy up
00814 const float mip_scale_correction=1.018;
00815 E*=mip_scale_correction;
00816 }
00817 ecor=CorrectShowerEnergyFar_Birch(E,st,mode,isdata);
00818 break;
00819 }
00820 return ecor;
00821
00822 }
|
|
||||||||||||||||||||
|
Definition at line 905 of file DataUtil/EnergyCorrections.cxx. Referenced by CorrectShowerEnergyFar(), and FullyCorrectShowerEnergy(). 00906 {
00907 // std::cout << "CorrectShowerEnergyFar_Birch: " << E << std::endl;
00908 float ecor=E;
00909 if (st==CandShowerHandle::kCC){
00910 if (mode==1){
00911 // Niki Correction
00912 ecor=((E)*(1.-0.12*exp(-0.12*E)));
00913 }
00914 else if (mode==2){
00915 // Andy Correction
00916 // ecor=(E)*(1.-0.2*exp(-0.2*E));
00917 ecor=E*(0.99-0.035*E*exp(-0.25*E));
00918 }
00919 }
00920 else if (st==CandShowerHandle::kWtCC){
00921 if (mode==1){
00922 // Niki Correction
00923 ecor=((E)*(1.+0.18*exp(-0.35*E)));
00924 }
00925 else if (mode==2){
00926 // Andy Correction
00927 E=ecor;
00928 }
00929 }
00930 return ecor;
00931 }
|
|
||||||||||||||||||||
|
Definition at line 958 of file DataUtil/EnergyCorrections.cxx. Referenced by CorrectShowerEnergyFar(), and ShowerEnergyCorrectionFarCedar(). 00959 {
00960 float ecor=E;
00961 if (st==CandShowerHandle::kCC){
00962 ecor = ecor*(0.950+0.277*exp(-ecor*1.64));
00963 }
00964 else if (st==CandShowerHandle::kWtCC){
00965 ecor = ecor*(0.957+0.271*exp(-ecor*1.64));
00966 }
00967 return ecor;
00968 }
|
|
||||||||||||||||||||
|
Definition at line 763 of file DataUtil/EnergyCorrections.cxx. References CorrectShowerEnergyNear_Birch(), CorrectShowerEnergyNear_Cedar(), and WarnUnknownVersion(). Referenced by CorrectShowerEnergy(). 00764 {
00765 //People should not be using this function
00766
00767 float ecor=E;
00768 switch(fVersion){
00769 case kCedar:
00770 ecor=CorrectShowerEnergyNear_Cedar(E,st,mode,isdata);
00771 break;
00772 case kBirch:
00773 ecor=CorrectShowerEnergyNear_Birch(E,st,mode,isdata);
00774 break;
00775 case kUnknown:
00776 default:
00777 WarnUnknownVersion("CorrectShowerEnergyNear()");
00778 ecor=CorrectShowerEnergyNear_Birch(E,st,mode,isdata);
00779 break;
00780 }
00781 return ecor;
00782 }
|
|
||||||||||||||||||||
|
Definition at line 877 of file DataUtil/EnergyCorrections.cxx. Referenced by CorrectShowerEnergyNear(), and FullyCorrectShowerEnergy(). 00878 {
00879
00880 // std::cout << "CorrectShowerEnergyNear_Birch: " << E << "\t" << mode << std::endl;
00881 float ecor=E;
00882 if (st==CandShowerHandle::kCC){
00883 if (mode==1){
00884 // Niki Correction
00885 ecor=E/1.18;
00886 }
00887 else if (mode==2){
00888 // Andy Correction
00889 ecor=((E/1.05)*(1.-0.35*exp(-0.18*E/1.06)));
00890 }
00891 }
00892 else if (st==CandShowerHandle::kWtCC){
00893 if (mode==1){
00894 // Niki Correction
00895 ecor=((E)*(1.+0.50*exp(-1.00*E)));
00896 }
00897 else if (mode==2){
00898 // Andy Correction
00899 ecor=E/1.03;
00900 }
00901 }
00902 return ecor;
00903 }
|
|
||||||||||||||||||||
|
Definition at line 946 of file DataUtil/EnergyCorrections.cxx. Referenced by CorrectShowerEnergyNear(), and ShowerEnergyCorrectionNearCedar(). 00947 {
00948 float ecor=E;
00949 if (st==CandShowerHandle::kCC){
00950 ecor = ecor*(0.921+0.231*exp(-ecor*1.63));
00951 }
00952 else if (st==CandShowerHandle::kWtCC){
00953 ecor = ecor*(0.924+0.235*exp(-ecor*1.63));
00954 }
00955 return ecor;
00956 }
|
|
||||||||||||||||
|
Definition at line 731 of file DataUtil/EnergyCorrections.cxx. References CorrectSignedMomentumFromCurvature_Birch(), CorrectSignedMomentumFromCurvature_Cedar(), det, and WarnUnknownVersion(). 00734 {
00735
00736 float pcor=p;
00737 switch(fVersion){
00738 case kCedar:
00739 pcor=CorrectSignedMomentumFromCurvature_Cedar(p,isdata,det);
00740 break;
00741 case kBirch:
00742 pcor=CorrectSignedMomentumFromCurvature_Birch(p,isdata,det);
00743 break;
00744 case kUnknown:
00745 default:
00746 WarnUnknownVersion("CorrectSignedMomentumFromCurvature()");
00747 pcor=CorrectSignedMomentumFromCurvature_Birch(p,isdata,det);
00748 break;
00749 }
00750 return pcor;
00751 }
|
|
||||||||||||||||
|
Definition at line 863 of file DataUtil/EnergyCorrections.cxx. Referenced by CorrectSignedMomentumFromCurvature(). 00864 {
00865 // input is the signed momentum (e.g. p/q)
00866 // isdata and det are not used... but maybe in the future
00867 float pcor=p;
00868 if (pcor!=0) {
00869 // correction advertised in 1430-v2, J. Musser
00870 // note: for 1/p < 0 C=1, so correction only matters for mu+
00871 float C = (1.01+0.1*fabs(1/p))/(1.01-0.1*(1/p));
00872 pcor*=(1.0/C);
00873 }
00874 return pcor;
00875 }
|
|
||||||||||||||||
|
Definition at line 941 of file DataUtil/EnergyCorrections.cxx. Referenced by CorrectSignedMomentumFromCurvature(). 00942 {
00943 return p;
00944 }
|
|
||||||||||||||||
|
Definition at line 1383 of file DataUtil/EnergyCorrections.cxx. References VldContext::GetDetector(), VldContext::GetSimFlag(), and MAXMSG. Referenced by FullyCorrectEnergyFromRange(), and MomentumRangeCorrectionCedar(). 01384 {
01385 MAXMSG("DataUtil",Msg::kInfo,1)
01386 << "EnergyCorrections -- Applying Energy from Range Correction for Cedar (1.018*E)-0.009 for ND Data and (1.010*E)-0.009 for everything else.\n";
01387 float eCor=E;
01388 if (vc.GetSimFlag()==SimFlag::kData && vc.GetDetector()==Detector::kNear) {
01389 eCor=(1.018*E)-0.009;
01390 }
01391 else {
01392 eCor=(1.010*E)-0.009;
01393 }
01394
01395 return eCor;
01396 }
|
|
||||||||||||||||||||
|
Definition at line 263 of file DataUtil/EnergyCorrections.cxx. References EnergyRangeCorrectionCedar(), FullyCorrectMomentumFromRange(), ReleaseType::IsBirch(), and ReleaseType::IsCedar(). 00267 {
00268 if (ReleaseType::IsBirch(release)) {
00269 const float m=0.1057;// muon mass
00270 float p = sqrt(E*E -m*m);
00271 float pcor = EnergyCorrections::FullyCorrectMomentumFromRange(p,vc,release,whichCor);
00272 return sqrt(pcor*pcor +m*m);
00273 }
00274 else if (ReleaseType::IsCedar(release)) {
00275 return EnergyCorrections::EnergyRangeCorrectionCedar(E,vc,whichCor);
00276 }
00277 return E;
00278 }
|
|
||||||||||||||||||||
|
Track Energy/Momentum Correction. INPUTS:
OUTPUT:
Definition at line 247 of file DataUtil/EnergyCorrections.cxx. References ReleaseType::IsBirch(), ReleaseType::IsCedar(), MomentumRangeCorrectionBirch(), and MomentumRangeCorrectionCedar(). Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), MadTVAnalysis::CreatePAN(), FullyCorrectEnergyFromRange(), NCEventInfo::GetTrackEnergy(), MergeEvent::Reco(), MadQuantities::RecoMuEnergyNew(), ANtpTrackInfoAna::RecoMuEnergyNew(), and Anp::FillTrack::Run(). 00251 {
00252 float pcor=p;
00253 if (ReleaseType::IsBirch(release)) {
00254 pcor=EnergyCorrections::MomentumRangeCorrectionBirch(p,vc,whichCor);
00255 }
00256 else if (ReleaseType::IsCedar(release)) {
00257 pcor=EnergyCorrections::MomentumRangeCorrectionCedar(p,vc,whichCor);
00258 }
00259 return pcor;
00260
00261 }
|
|
||||||||||||||||||||||||
|
INPUTS:
OUTPUT:
Further notes: This routine uses the Calibrator, and requires read access to the offline database. At present, any up-to-date database will do. Note that this routine initializes a custom Calibrator on the first call; it should not interfere with other Calibrators you may be using. WhichCorrection_t lookup table Birch -- Shower ================= kDefault = Niki's Correction kVersion1 = Niki's Correction kVersion2 = Andy's Correction Cedar -- Shower =============== kDefault = (MC Only) Drift Correction + Cal Group Fudge Factors + Scaled Masaki 17th May kVersion1 = (MC Only) Drift Correction + Masaki 17th May kVersion2 = Masaki Exponential kVersion3 = (MC Only) Drift Correction + Cal Group Fudge Factors + Scaled Masaki 17th May kNoCalGroup = Scaled Masaki 17th May Definition at line 179 of file DataUtil/EnergyCorrections.cxx. References CalibrationGroupEnergyCorrections(), CorrectShowerEnergyFar_Birch(), CorrectShowerEnergyNear_Birch(), VldContext::GetDetector(), ReleaseType::GetRecoInfo(), ReleaseType::IsBirch(), ReleaseType::IsCedar(), ReleaseType::IsDogwood(), ShowerEnergyCorrectionFarCedar(), ShowerEnergyCorrectionFarCedarPhyBhcurve(), ShowerEnergyCorrectionFarDogwood(), ShowerEnergyCorrectionNearCedar(), ShowerEnergyCorrectionNearCedarPhyBhcurve(), and ShowerEnergyCorrectionNearDogwood(). Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), NCEventInfo::GetShowerEnergy(), NuReco::GetShowerEnergyCor(), MadQuantities::RecoShwEnergyNew(), ANtpShowerInfoAna::RecoShwEnergyNew(), Anp::FillShower::Run(), and Anp::FillEnergy::Run(). 00184 {
00185
00186 //First step is to apply Calibration Group Corrections
00187 float eCor=EnergyCorrections::CalibrationGroupEnergyCorrections(E,vc,release,whichCor);
00188
00189 // Get the reconstruction version.
00190 ReleaseType::Release_t recoVers = ReleaseType::GetRecoInfo(release);
00191
00192 //Now need to apply Masaki's correction
00193 if (ReleaseType::IsBirch(release)) {
00194 int mode=1;
00195 if (whichCor==EnergyCorrections::kVersion2)
00196 mode=2;
00197 if (vc.GetDetector()==Detector::kNear)
00198 return EnergyCorrections::CorrectShowerEnergyNear_Birch(eCor,st,mode);
00199 else if (vc.GetDetector()==Detector::kFar)
00200 return EnergyCorrections::CorrectShowerEnergyFar_Birch(eCor,st,mode);
00201
00202 }
00203 else if (ReleaseType::IsCedar(release)) {
00204 //Now need to check version
00205 if (recoVers >= ReleaseType::kR1_24_3) {
00206 if (vc.GetDetector()==Detector::kNear)
00207 return EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(eCor,st,whichCor);
00208 else if (vc.GetDetector()==Detector::kFar)
00209 return EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(eCor,st,whichCor);
00210
00211 }
00212 else {
00213 if (vc.GetDetector()==Detector::kNear)
00214 return EnergyCorrections::ShowerEnergyCorrectionNearCedar(eCor,st,whichCor);
00215 else if (vc.GetDetector()==Detector::kFar)
00216 return EnergyCorrections::ShowerEnergyCorrectionFarCedar(eCor,st,whichCor);
00217 }
00218
00219 }
00220 else if (ReleaseType::IsDogwood(release)) {
00221 if (vc.GetDetector()==Detector::kNear)
00222 return EnergyCorrections::ShowerEnergyCorrectionNearDogwood(eCor,st,whichCor);
00223 else if (vc.GetDetector()==Detector::kFar)
00224 return EnergyCorrections::ShowerEnergyCorrectionFarDogwood(eCor,st,whichCor);
00225 }
00226
00227 return E;
00228 }
|
|
||||||||||||||||||||
|
Definition at line 280 of file DataUtil/EnergyCorrections.cxx. References ReleaseType::IsBirch(), ReleaseType::IsCedar(), SignedMomentumCurvatureCorrectionBirch(), and SignedMomentumCurvatureCorrectionCedar(). Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), MadTVAnalysis::CreatePAN(), NCEventInfo::GetTrackEnergy(), MergeEvent::Reco(), MadQuantities::RecoMuEnergyNew(), and ANtpTrackInfoAna::RecoMuEnergyNew(). 00284 {
00285 float pcor=p;
00286 if (ReleaseType::IsBirch(release)) {
00287 pcor=EnergyCorrections::SignedMomentumCurvatureCorrectionBirch(p,vc,whichCor);
00288 }
00289 else if (ReleaseType::IsCedar(release)) {
00290 pcor=EnergyCorrections::SignedMomentumCurvatureCorrectionCedar(p,vc,whichCor);
00291 }
00292 return pcor;
00293
00294 }
|
|
|
Definition at line 658 of file DataUtil/EnergyCorrections.cxx. References fSubVersion, and s(). Referenced by WarnUnknownVersion(). 00659 {
00660 std::string s;
00661 switch(fVersion){
00662 case kBirch:
00663 s+="BIRCH"; break;
00664 case kCedar:
00665 s+="CEDAR"; break;
00666 case kUnknown:
00667 default:
00668 s+="???";
00669 break;
00670 }
00671 std::ostringstream os; os<<"-v"<<fSubVersion<<std::ends;
00672 s+=os.str();
00673
00674 return s;
00675 }
|
|
||||||||||||
|
Definition at line 1160 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionFarDogwood0(). 01162 {
01163 MAXMSG("DataUtil",Msg::kInfo,1)
01164 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector Dogwood0\n";
01165 float recoE=energy;
01166 float le = log10(fmin(fmax(energy,0.3),20));
01167 float we=0;
01168 if (st==CandShowerHandle::kCC){
01169 recoE = energy*(1.02473 + 0.0429276*le + -0.016319*(2.*pow(le,2)-1) + -0.000380156*(4.*pow(le,3)-3.*le));
01170 }
01171 //Warning: weight shower energy is not used after Cedar_phy_bhcurv
01172 else if (st==CandShowerHandle::kWtCC) {
01173 we = fmin(fmax(energy,0.3),20);
01174 recoE= energy*(1.02473 + 0.0429276*le + -0.016319*(2.*pow(le,2)-1) + -0.000380156*(4.*pow(le,3)-3.*le));
01175 }
01176 return recoE;
01177 }
|
|
||||||||||||
|
Definition at line 1201 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionFarCedarPhyBhcurve(). 01203 {
01204 //From DocDB 3077_v3
01205 MAXMSG("DataUtil",Msg::kInfo,1)
01206 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB 3895_v4\n";
01207 float recoE=energy;
01208 float le = log10(fmin(fmax(energy,0.3),20));
01209 float we=0;
01210 if (st==CandShowerHandle::kCC){
01211 recoE = energy*( 1.15566-0.286445*le+ 0.122705*(2.*pow(le,2)-1)-0.0183855*(4.*pow(le,3)-3.*le));
01212 }
01213 else if (st==CandShowerHandle::kWtCC) {
01214 we = fmin(fmax(energy,0.3),20);
01215 recoE= energy*(0.971346+0.00314063*we-0.000135242*pow(we,2)+0.626512*TMath::Exp(-we*3.26053));
01216 }
01217 return recoE;
01218 }
|
|
||||||||||||
|
Definition at line 1242 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. 01244 {
01245 //From DocDB 3077_v3
01246 MAXMSG("DataUtil",Msg::kInfo,1)
01247 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB 3895_v4\n";
01248 float tempE=energy/EnergyCorrections::cgffCedarPhyDaikonFD;
01249 float recoE=tempE;
01250 float le = log10(fmin(fmax(tempE,0.3),20));
01251 float we=0;
01252 if (st==CandShowerHandle::kCC){
01253 recoE = tempE*( 1.15566-0.286445*le+ 0.122705*(2.*pow(le,2)-1)-0.0183855*(4.*pow(le,3)-3.*le));
01254 }
01255 else if (st==CandShowerHandle::kWtCC) {
01256 we = fmin(fmax(energy,0.3),20);
01257 recoE= energy*(0.971346+0.00314063*we-0.000135242*pow(we,2)+0.626512*TMath::Exp(-we*3.26053));
01258 }
01259 return recoE;
01260 }
|
|
||||||||||||
|
Definition at line 1121 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionFarDogwood(). 01123 {
01124 MAXMSG("DataUtil",Msg::kInfo,1)
01125 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB XXXX_v4\n";
01126 float recoE=energy;
01127 float le = log10(fmin(fmax(energy,0.3),20));
01128 float we=0;
01129 if (st==CandShowerHandle::kCC){
01130 recoE = energy*(1.01397 + 0.0646697*le -0.0258817*(2.*pow(le,2)-1) + 0.00117583*(4.*pow(le,3)-3.*le));
01131 }
01132 //Warning: weight shower energy is not used after Cedar_phy_bhcurv
01133 else if (st==CandShowerHandle::kWtCC) {
01134 we = fmin(fmax(energy,0.3),20);
01135 recoE= energy*(1.01397 + 0.0646697*le -0.0258817*(2.*pow(le,2)-1) + 0.00117583*(4.*pow(le,3)-3.*le));
01136 }
01137 return recoE;
01138 }
|
|
||||||||||||
|
Definition at line 1280 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionFarCedar(). 01282 {
01283 //From DocDB 3077_v3
01284 MAXMSG("DataUtil",Msg::kInfo,1)
01285 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB 3077_v3\n";
01286 float recoE=energy;
01287 // std::cout << "Old:\t" << recoE << std::endl;
01288 float le = log10(fmax(energy,0.2));
01289 if (st==CandShowerHandle::kCC){
01290 recoE = energy*(1.113584-0.299139*le+0.145169*(2.*pow(le,2)-1)-0.0232853*(4.*pow(le,3)-3.*le));
01291 }
01292 else if (st==CandShowerHandle::kWtCC){
01293 recoE= energy*(1.052872-0.19185*le+0.102449*(2.*pow(le,2)-1)-0.0182317*(4.*pow(le,3)-3.*le));
01294 }
01295 return recoE;
01296 }
|
|
||||||||||||
|
Definition at line 1319 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionFarCedar(), and ShowerEnergyCorrectionFarCedarPhyBhcurve(). 01321 {
01322 //From DocDB 3077_v3
01323 MAXMSG("DataUtil",Msg::kInfo,1)
01324 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB 3077_v3 -- Scaled by Appropriate CG factor for uncalibrated data he used\n";
01325 float tempE=energy/EnergyCorrections::cgffCedarR1_24_1MCFD;
01326 float recoE=tempE;
01327 // std::cout << "New:\t" <<recoE << std::endl;
01328 float le = log10(fmax(tempE,0.2));
01329 if (st==CandShowerHandle::kCC){
01330 recoE = tempE*(1.113584-0.299139*le+0.145169*(2.*pow(le,2)-1)-0.0232853*(4.*pow(le,3)-3.*le));
01331 }
01332 else if (st==CandShowerHandle::kWtCC){
01333 recoE= tempE*(1.052872-0.19185*le+0.102449*(2.*pow(le,2)-1)-0.0182317*(4.*pow(le,3)-3.*le));
01334 }
01335 return recoE;
01336 }
|
|
||||||||||||
|
Definition at line 1141 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionNearDogwood0(). 01143 {
01144 MAXMSG("DataUtil",Msg::kInfo,1)
01145 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector Dogwood0\n";
01146 float recoE=energy;
01147 float le = log10(fmin(fmax(energy,0.3),20));
01148 float we=0;
01149 if (st==CandShowerHandle::kCC){
01150 recoE = energy*(0.978739 + 0.156093*le + -0.0608388*(2.*pow(le,2)-1) + 0.00818386*(4.*pow(le,3)-3.*le));
01151 }
01152 //Warning: weight shower energy is not used after Cedar_phy_bhcurv
01153 else if (st==CandShowerHandle::kWtCC) {
01154 we = fmin(fmax(energy,0.3),20);
01155 recoE = energy*(0.978739 + 0.156093*le + -0.0608388*(2.*pow(le,2)-1) + 0.00818386*(4.*pow(le,3)-3.*le));
01156 }
01157 return recoE;
01158 }
|
|
||||||||||||
|
Definition at line 1182 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionNearCedarPhyBhcurve(). 01184 {
01185 //From DocDB 3077_v3
01186 MAXMSG("DataUtil",Msg::kInfo,1)
01187 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB 3895_v4\n";
01188 float recoE=energy;
01189 float le = log10(fmin(fmax(energy,0.3),20));
01190 float we=0;
01191 if (st==CandShowerHandle::kCC){
01192 recoE = energy*(1.10973-0.248714*le +0.116769*(2.*pow(le,2)-1)-0.0200268*(4.*pow(le,3)-3.*le));
01193 }
01194 else if (st==CandShowerHandle::kWtCC) {
01195 we = fmin(fmax(energy,0.3),20);
01196 recoE= energy*(0.999461-0.00334628*we+0.0000563316*pow(we,2)+0.35232*TMath::Exp(-we*1.76594));
01197 }
01198 return recoE;
01199 }
|
|
||||||||||||
|
Definition at line 1222 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. 01224 {
01225 //From DocDB 3077_v3
01226 MAXMSG("DataUtil",Msg::kInfo,1)
01227 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB 3895_v4\n";
01228 float tempE=energy/EnergyCorrections::cgffCedarPhyDaikonND;
01229 float recoE=tempE;
01230 float le = log10(fmin(fmax(tempE,0.3),20));
01231 float we=0;
01232 if (st==CandShowerHandle::kCC){
01233 recoE = tempE*(1.10973-0.248714*le +0.116769*(2.*pow(le,2)-1)-0.0200268*(4.*pow(le,3)-3.*le));
01234 }
01235 else if (st==CandShowerHandle::kWtCC) {
01236 we = fmin(fmax(energy,0.3),20);
01237 recoE= energy*(0.999461-0.00334628*we+0.0000563316*pow(we,2)+0.35232*TMath::Exp(-we*1.76594));
01238 }
01239 return recoE;
01240 }
|
|
||||||||||||
|
Definition at line 1101 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionNearDogwood(). 01103 {
01104 MAXMSG("DataUtil",Msg::kInfo,1)
01105 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB XXXX_v4\n";
01106 float recoE=energy;
01107 float le = log10(fmin(fmax(energy,0.3),20));
01108 float we=0;
01109 if (st==CandShowerHandle::kCC){
01110 recoE = energy*(0.96922+0.175773*le -0.0684406*(2.*pow(le,2)-1)+0.00940122*(4.*pow(le,3)-3.*le));
01111 }
01112 //Warning: weight shower energy is not used after Cedar_phy_bhcurv
01113 else if (st==CandShowerHandle::kWtCC) {
01114 we = fmin(fmax(energy,0.3),20);
01115 recoE = energy*(0.96922+0.175773*le -0.0684406*(2.*pow(le,2)-1)+0.00940122*(4.*pow(le,3)-3.*le));
01116 }
01117 return recoE;
01118 }
|
|
||||||||||||
|
Definition at line 1263 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionNearCedar(). 01265 {
01266 //From DocDB 3077_v3
01267 MAXMSG("DataUtil",Msg::kInfo,1)
01268 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB 3077_v3\n";
01269 float recoE=energy;
01270 float le = log10(fmax(energy,0.2));
01271 if (st==CandShowerHandle::kCC){
01272 recoE = energy*(1.078984-0.249843*le+0.134518*(2.*pow(le,2)-1)-0.025613*(4.*pow(le,3)-3.*le));
01273 }
01274 else if (st==CandShowerHandle::kWtCC) {
01275 recoE= energy*(1.070553-0.207148*le+0.0943124*(2.*pow(le,2)-1)-0.0153231*(4.*pow(le,3)-3.*le));
01276 }
01277 return recoE;
01278 }
|
|
||||||||||||
|
Definition at line 1300 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by ShowerEnergyCorrectionNearCedar(), and ShowerEnergyCorrectionNearCedarPhyBhcurve(). 01302 {
01303 //From DocDB 3077_v3
01304 MAXMSG("DataUtil",Msg::kInfo,1)
01305 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB 3077_v3 -- Scaled by Appropriate CG factor for uncalibrated data he used\n";
01306 float tempE=energy/EnergyCorrections::cgffCedarR1_24_1MCND;
01307 float recoE=tempE;
01308 float le = log10(fmax(tempE,0.2));
01309 if (st==CandShowerHandle::kCC){
01310 recoE = tempE*(1.078984-0.249843*le+0.134518*(2.*pow(le,2)-1)-0.025613*(4.*pow(le,3)-3.*le));
01311 }
01312 else if (st==CandShowerHandle::kWtCC) {
01313 recoE= tempE*(1.070553-0.207148*le+0.0943124*(2.*pow(le,2)-1)-0.0153231*(4.*pow(le,3)-3.*le));
01314 }
01315 return recoE;
01316 }
|
|
||||||||||||||||
|
Definition at line 1340 of file DataUtil/EnergyCorrections.cxx. References VldContext::GetDetector(), and VldContext::GetSimFlag(). Referenced by FullyCorrectMomentumFromRange(). 01341 {
01342 static const float c[4]={1.01334,0.05563,-0.05346,0.01205};
01343
01344 // correction for difference in data mc steel density
01345 if (vc.GetSimFlag()==SimFlag::kData){
01346 // inital correction, pre-Oxford 2006
01347 //static const float dcor=7.755/7.87;// data/mc density
01348 float dcor=1;
01349 if (vc.GetDetector()==Detector::kNear) dcor=(7.85*2.563)/(7.87*2.54);
01350 else if (vc.GetDetector()==Detector::kFar) dcor=(7.85*2.558)/(7.87*2.54);
01351
01352 p*=dcor;
01353 }
01354 //
01355 float pcor=p/(c[0] + c[1]*log(p) + c[2]*pow(log(p), 2) + c[3]*pow(log(p),3));
01356 return pcor;
01357 }
|
|
||||||||||||||||
|
Definition at line 1374 of file DataUtil/EnergyCorrections.cxx. References EnergyRangeCorrectionCedar(). Referenced by FullyCorrectMomentumFromRange(). 01375 {
01376 //return p;
01377 const float m=0.1057;// muon mass
01378 float E = sqrt(p*p+m*m);
01379 float eCor = EnergyCorrections::EnergyRangeCorrectionCedar(E,vc,whichCor);
01380 return sqrt(eCor*eCor-m*m);
01381 }
|
|
||||||||||||
|
Definition at line 651 of file DataUtil/EnergyCorrections.cxx. References fSubVersion, and fVersion. Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), ANtpTrackInfoAna::Analyze(), ANtpShowerInfoAna::Analyze(), and NCAnalysisCuts::IsGoodShower(). 00653 {
00654 fVersion=ver;
00655 fSubVersion=subver;
00656 }
|
|
||||||||||||
|
Definition at line 569 of file DataUtil/EnergyCorrections.cxx. References VldContext::GetDetector(), VldContext::GetSimFlag(), ShowerEnergyCorrectionFarDogwood(), and ShowerEnergyCorrectionNearDogwood(). Referenced by CandShowerHandle::CalibrateEnergy(). 00570 {
00571 //Two things to do:
00572 //i) apply Calibration Group tweaks
00573 //ii) apply Maskai's Reco->Truth formula
00574 float eCor=E;
00575 if (vc.GetDetector()==Detector::kFar) {
00576 //Cal group corrections
00577 if (vc.GetSimFlag()==SimFlag::kData) {
00578 eCor*=EnergyCorrections::cgffCedarPhyDataFD;
00579 }
00580 else if (vc.GetSimFlag()==SimFlag::kMC) {
00581 eCor*=EnergyCorrections::cgffCedarPhyDaikonFD;
00582 }
00583 //Reco-Truth Conversion
00584 eCor=EnergyCorrections::ShowerEnergyCorrectionFarDogwood(eCor,CandShowerHandle::kCC,EnergyCorrections::kDefault);
00585 }
00586 else if (vc.GetDetector()==Detector::kNear) {
00587 //Cal group corrections
00588 if (vc.GetSimFlag()==SimFlag::kData) {
00589 eCor*=EnergyCorrections::cgffCedarPhyDataND;
00590 }
00591 else if (vc.GetSimFlag()==SimFlag::kMC) {
00592 eCor*=EnergyCorrections::cgffCedarPhyDaikonND;
00593 }
00594 //Reco-Truth Conversion
00595 eCor=EnergyCorrections::ShowerEnergyCorrectionNearDogwood(eCor,CandShowerHandle::kCC,EnergyCorrections::kDefault);
00596 }
00597
00598 return eCor;
00599
00600 }
|
|
||||||||||||||||
|
Definition at line 1080 of file DataUtil/EnergyCorrections.cxx. References CorrectShowerEnergyFar_Cedar(), MasakiFarMay17th(), and MasakiFarMay17thScaled(). Referenced by FullyCorrectShowerEnergy(). 01083 {
01084 switch(whichCor) {
01085 case EnergyCorrections::kVersion2:
01086 return EnergyCorrections::CorrectShowerEnergyFar_Cedar(energy,st);
01087 case EnergyCorrections::kVersion1:
01088 return EnergyCorrections::MasakiFarMay17th(energy,st);
01089 case EnergyCorrections::kVersion3:
01090 case EnergyCorrections::kDefault:
01091 default:
01092 return EnergyCorrections::MasakiFarMay17thScaled(energy,st);
01093 }
01094 return energy;
01095 }
|
|
||||||||||||||||
|
Definition at line 1047 of file DataUtil/EnergyCorrections.cxx. References MasakiFarDec15th(), and MasakiFarMay17thScaled(). Referenced by FullyCorrectShowerEnergy(). 01050 {
01051 switch(whichCor) {
01052 case EnergyCorrections::kVersion4:
01053 return EnergyCorrections::MasakiFarMay17thScaled(energy,st);
01054 case EnergyCorrections::kDefault:
01055 default:
01056 return EnergyCorrections::MasakiFarDec15th(energy,st);
01057 }
01058 return energy;
01059 }
|
|
||||||||||||||||
|
Definition at line 986 of file DataUtil/EnergyCorrections.cxx. References MasakiFarJune30_2009(). Referenced by FullyCorrectShowerEnergy(), ShowerEnergyConversionDogwood(), and WeightedShowerEnergyConversionDogwood(). 00989 {
00990 switch(whichCor) {
00991 case EnergyCorrections::kVersion4:
00992 return EnergyCorrections::MasakiFarJune30_2009(energy,st);
00993 case EnergyCorrections::kDefault:
00994 default:
00995 return EnergyCorrections::MasakiFarJune30_2009(energy,st);
00996 }
00997 return energy;
00998 }
|
|
||||||||||||||||
|
Definition at line 1014 of file DataUtil/EnergyCorrections.cxx. References MasakiFar_forDogwood0(). 01017 {
01018 switch(whichCor) {
01019 case EnergyCorrections::kVersion4:
01020 return EnergyCorrections::MasakiFar_forDogwood0(energy,st);
01021 case EnergyCorrections::kDefault:
01022 default:
01023 return EnergyCorrections::MasakiFar_forDogwood0(energy,st);
01024 }
01025 return energy;
01026 }
|
|
||||||||||||||||
|
Definition at line 1063 of file DataUtil/EnergyCorrections.cxx. References CorrectShowerEnergyNear_Cedar(), MasakiNearMay17th(), and MasakiNearMay17thScaled(). Referenced by FullyCorrectShowerEnergy(). 01066 {
01067 switch(whichCor) {
01068 case EnergyCorrections::kVersion2:
01069 return EnergyCorrections::CorrectShowerEnergyNear_Cedar(energy,st);
01070 case EnergyCorrections::kVersion1:
01071 return EnergyCorrections::MasakiNearMay17th(energy,st);
01072 case EnergyCorrections::kVersion3:
01073 case EnergyCorrections::kDefault:
01074 default:
01075 return EnergyCorrections::MasakiNearMay17thScaled(energy,st);
01076 }
01077 return energy;
01078 }
|
|
||||||||||||||||
|
Definition at line 1033 of file DataUtil/EnergyCorrections.cxx. References MasakiNearDec15th(), and MasakiNearMay17thScaled(). Referenced by FullyCorrectShowerEnergy(). 01036 {
01037 switch(whichCor) {
01038 case EnergyCorrections::kVersion4:
01039 return EnergyCorrections::MasakiNearMay17thScaled(energy,st);
01040 case EnergyCorrections::kDefault:
01041 default:
01042 return EnergyCorrections::MasakiNearDec15th(energy,st);
01043 }
01044 return energy;
01045 }
|
|
||||||||||||||||
|
Definition at line 972 of file DataUtil/EnergyCorrections.cxx. References MasakiNearJune30_2009(). Referenced by FullyCorrectShowerEnergy(), ShowerEnergyConversionDogwood(), and WeightedShowerEnergyConversionDogwood(). 00975 {
00976 switch(whichCor) {
00977 case EnergyCorrections::kVersion4:
00978 return EnergyCorrections::MasakiNearJune30_2009(energy,st);
00979 case EnergyCorrections::kDefault:
00980 default:
00981 return EnergyCorrections::MasakiNearJune30_2009(energy,st);
00982 }
00983 return energy;
00984 }
|
|
||||||||||||||||
|
Definition at line 1000 of file DataUtil/EnergyCorrections.cxx. References MasakiNear_forDogwood0(). 01003 {
01004 switch(whichCor) {
01005 case EnergyCorrections::kVersion4:
01006 return EnergyCorrections::MasakiNear_forDogwood0(energy,st);
01007 case EnergyCorrections::kDefault:
01008 default:
01009 return EnergyCorrections::MasakiNear_forDogwood0(energy,st);
01010 }
01011 return energy;
01012 }
|
|
||||||||||||||||
|
Definition at line 1359 of file DataUtil/EnergyCorrections.cxx. Referenced by FullyCorrectSignedMomentumFromCurvature(). 01359 {
01360 // input is the signed momentum (e.g. p/q)
01361 // isdata and det are not used... but maybe in the future
01362 float pcor=p;
01363 if (pcor!=0) {
01364 // correction advertised in 1430-v2, J. Musser
01365 // note: for 1/p < 0 C=1, so correction only matters for mu+
01366 float C = (1.01+0.1*fabs(1/p))/(1.01-0.1*(1/p));
01367 pcor*=(1.0/C);
01368 }
01369 return pcor;
01370 }
|
|
||||||||||||||||
|
Definition at line 1398 of file DataUtil/EnergyCorrections.cxx. References MAXMSG. Referenced by FullyCorrectSignedMomentumFromCurvature(). 01399 {
01400 MAXMSG("DataUtil",Msg::kInfo,1)
01401 << "EnergyCorrections -- Not applying momentum from curvature correction for Cedar\n";
01402 return p;
01403 }
|
|
|
Definition at line 695 of file DataUtil/EnergyCorrections.cxx. References CorrectionVersion_t, and s(). 00696 {
00697 CorrectionVersion_t ver = kUnknown;
00698 std::string s=name;
00699
00700 if (s.find("R1_18")!=std::string::npos) {
00701 ver=EnergyCorrections::kBirch;
00702 }
00703 else if (s.find("cedar")!=std::string::npos) {
00704 ver=EnergyCorrections::kCedar;
00705 }
00706 return ver;
00707 }
|
|
|
Definition at line 677 of file DataUtil/EnergyCorrections.cxx. References GetCorrectionAsString(). Referenced by CorrectMomentumFromRange(), CorrectShowerEnergyFar(), CorrectShowerEnergyNear(), and CorrectSignedMomentumFromCurvature(). 00678 {
00679 static Short_t nwarn=0;
00680 if (nwarn<=9) {
00681 std::cerr<<"Energy Corrections: In "<<caller_routine
00682 <<"Energy Corrections: Warning, unknown correction version "
00683 <<GetCorrectionAsString()
00684 <<"Energy Corrections: Defaulting to Birch era corrections.\n"
00685 <<"Energy Corrections: Please Call SetCorrectionVersion() in the future.\n"
00686 <<std::endl;
00687 nwarn++;
00688 }
00689 if (nwarn==9) {
00690 std::cerr<<"Energy Corrections: last message of this type..."<<std::endl;
00691 }
00692
00693 }
|
|
||||||||||||
|
Definition at line 607 of file DataUtil/EnergyCorrections.cxx. References VldContext::GetDetector(), VldContext::GetSimFlag(), ShowerEnergyCorrectionFarDogwood(), and ShowerEnergyCorrectionNearDogwood(). Referenced by CandShowerHandle::CalibrateEnergy(). 00608 {
00609 //Two things to do:
00610 //i) apply Calibration Group tweaks
00611 //ii) apply Maskai's Reco->Truth formula
00612 float eCor=E;
00613 if (vc.GetDetector()==Detector::kFar) {
00614 //Cal group corrections
00615 if (vc.GetSimFlag()==SimFlag::kData) {
00616 eCor*=EnergyCorrections::cgffCedarPhyDataFD;
00617 }
00618 else if (vc.GetSimFlag()==SimFlag::kMC) {
00619 eCor*=EnergyCorrections::cgffCedarPhyDaikonFD;
00620 }
00621 //Reco-Truth Conversion
00622 eCor=EnergyCorrections::ShowerEnergyCorrectionFarDogwood(eCor,CandShowerHandle::kWtCC,EnergyCorrections::kDefault);
00623 }
00624 else if (vc.GetDetector()==Detector::kNear) {
00625 //Cal group corrections
00626 if (vc.GetSimFlag()==SimFlag::kData) {
00627 eCor*=EnergyCorrections::cgffCedarPhyDataND;
00628 }
00629 else if (vc.GetSimFlag()==SimFlag::kMC) {
00630 eCor*=EnergyCorrections::cgffCedarPhyDaikonND;
00631 }
00632 //Reco-Truth Conversion
00633 eCor=EnergyCorrections::ShowerEnergyCorrectionNearDogwood(eCor,CandShowerHandle::kWtCC,EnergyCorrections::kDefault);
00634 }
00635
00636 return eCor;
00637
00638 }
|
|
|
Definition at line 346 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 368 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 367 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 350 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 357 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 351 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 358 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 352 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 359 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 353 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 360 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 364 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 365 of file DataUtil/EnergyCorrections.cxx. |
|
|
Definition at line 648 of file DataUtil/EnergyCorrections.cxx. Referenced by GetCorrectionAsString(), and SetCorrectionVersion(). |
|
|
Definition at line 647 of file DataUtil/EnergyCorrections.cxx. Referenced by SetCorrectionVersion(). |
1.3.9.1