#include <string>#include "Conventions/Detector.h"#include "Conventions/ReleaseType.h"#include "RecoBase/CandShowerHandle.h"Go to the source code of this file.
|
|
Referenced by EnergyCorrections::VersionFromFilename(). |
|
|
|
|
|
Definition at line 324 of file EnergyCorrections.h. 00324 {
00325 kUnknown,
00326 kBirch,
00327 kCedar
00328 } CorrectionVersion_t;
|
|
|
Definition at line 215 of file EnergyCorrections.h. 00215 {
00216 kDefault=0,
00217 kVersion1,
00218 kVersion2,
00219 kVersion3,
00220 kVersion4,
00221 kVersion5,
00222 kVersion6,
00223 kNoCalGroup
00224 } WhichCorrection_t;
|
|
||||||||||||||||||||
|
Definition at line 353 of file 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 EnergyCorrections::FullyCorrectShowerEnergy(). 00357 {
00358 //Nb: This function is called by FullyCorrectShowerEnergy, do not use it for CC Shower's
00359
00360 float retval = E; // Default return value.
00361
00362 MAXMSG("DataUtil",Msg::kInfo,1)
00363 << "CalibrationGroupEnergyCorrections:: Using Release Type: "
00364 << ReleaseType::AsString(release) << "\tusing correction version: "
00365 << whichCor << "\n";
00366
00367 static Calibrator* customCalibrator = 0;
00368 if(customCalibrator ==0 ) {
00369 //Initialize. Disable warning that we're about to do something 'tricksy'.
00370 // This tricksyness is just to make a custom instance of the calibrator, so we don't
00371 // interfere with any other custom settings that the user (i.e. Jeff H) is doing
00372 // This is actually pretty safe, if an expert like me (Nathaniel) does it.
00373 MsgService::Instance()->GetStream("Calib")->SetLogLevel(Msg::kFatal);
00374 customCalibrator = Calibrator::CreateCustomCalibrator();
00375
00376 // Turn off the units we aren't using, just to make them go faster.
00377 // "Speed holes!" -Homer Simpson
00378
00379 customCalibrator->Set("Thermometer=SimpleCalScheme "
00380 "PeCalibrator=SimpleCalScheme "
00381 "LinCalibrator=SimpleCalScheme "
00382 "StripCalibrator=SimpleCalScheme "
00383 "AttenCalibrator=SimpleCalScheme "
00384 "MIPCalibrator=SimpleCalScheme "
00385 "TimeCalibrator=SimpleCalScheme ");
00386 MsgService::Instance()->GetStream("Calib")->SetLogLevel(Msg::kWarning);
00387 }
00388
00389
00390
00391 // Get the reconstruction version.
00392 ReleaseType::Release_t recoVers = ReleaseType::GetRecoInfo(release);
00393
00394 // Fudge #0:
00395 // For PRL-era data, we fudged the FD data by 1.8%
00396 if( ReleaseType::IsBirch(release)
00397 && vc.GetSimFlag()==SimFlag::kData
00398 && vc.GetDetector()==Detector::kFar )
00399 {
00400 MAXMSG("DataUtil",Msg::kInfo,1)
00401 << "EnergyCorrections -- Applying Birch Far Detector Factor ( "
00402 << EnergyCorrections::cgffBirchDataFD << ")\n";
00403 retval = retval*EnergyCorrections::cgffBirchDataFD;
00404 }
00405
00406
00407
00408 if(ReleaseType::IsCedar(release) && whichCor!=EnergyCorrections::kNoCalGroup) {
00409 //
00410 // Fudge #1
00411 // Attempt to remove the MC bug, where the drift decalibration was applied with the wrong sign.
00412 // This is a time-dependent correction which should fix the problem for cedar-daikon MC R1.24.1
00413 // This problem was fixed in R1.24.2 and R1.24.calB, but NOT R1.24.calA.
00414 //
00415 if( ReleaseType::IsCedar(release)
00416 && ReleaseType::IsDaikon(release)
00417 && (recoVers < ReleaseType::kR1_24_2 || recoVers == ReleaseType::kR1_24_Cal )
00418 && vc.GetSimFlag()==SimFlag::kMC)
00419 {
00420 // Removes MC bug where drift correction was applied twice.
00421 // Fix it by de-applying the drift twice.
00422 MAXMSG("DataUtil",Msg::kInfo,1)
00423 << "EnergyCorrections -- Applying Infamous MC Drift Bug Correction\n";
00424
00425 customCalibrator->Reset(vc);
00426 float drift = customCalibrator->GetDriftCorrected(1.0,PlexStripEndId());
00427 retval = retval / (drift*drift);
00428 }
00429
00430
00431 // Correction #2
00432 // These are the preliminary final corrections for the June 2007 cc box opening.
00433 // The numbers are taken from DocDB 3139 by Jeff Hartnell and Tingjun Yang
00434 // These are only applied if using the default (or version3) correction
00435 if(!(whichCor==EnergyCorrections::kVersion1 || whichCor==EnergyCorrections::kVersion2)) {
00436
00437 if(vc.GetSimFlag()==SimFlag::kMC) {
00438 //For the Cedar MC we have the following possible datasets:
00439 // i) CedarDaikon -- used in Summer analysis 2007
00440 // ii) CedarPhyDaikon -- reprocessed by batch group over summer 2007
00441
00442 if(ReleaseType::IsCedar(release) && recoVers<=ReleaseType::kR1_24_1) {
00443 //Now here we have two options either use the latest greatest numbers
00444 // or we use the old numbers from the 2007 summer analysis
00445 if(whichCor==kVersion3) {
00446 //Use the old numbers
00447 if(vc.GetDetector()==Detector::kFar) {
00448 MAXMSG("DataUtil",Msg::kInfo,1)
00449 << "EnergyCorrections -- Applying R_1_24_1 (Summer 2007) Far MC Correction Factor"
00450 << " (" << EnergyCorrections::cgffCedarR1_24_1MCFDOld << ")\n";
00451 retval*=EnergyCorrections::cgffCedarR1_24_1MCFDOld;
00452 }
00453 else if(vc.GetDetector()==Detector::kNear) {
00454 MAXMSG("DataUtil",Msg::kInfo,1)
00455 << "EnergyCorrections -- Applying R_1_24_1 (Summer 2007) Near MC Correction Factor"
00456 << " (" << EnergyCorrections::cgffCedarR1_24_1MCNDOld << ")\n";
00457 retval*=EnergyCorrections::cgffCedarR1_24_1MCNDOld;
00458 }
00459 }
00460 else {
00461 //Use the new numbers
00462 if(vc.GetDetector()==Detector::kFar) {
00463 MAXMSG("DataUtil",Msg::kInfo,1)
00464 << "EnergyCorrections -- Applying R_1_24_1 (Fall 2007) Far MC Correction Factor"
00465 << " (" << EnergyCorrections::cgffCedarR1_24_1MCFD << ")\n";
00466 retval*=EnergyCorrections::cgffCedarR1_24_1MCFD;
00467 }
00468 else if(vc.GetDetector()==Detector::kNear) {
00469 MAXMSG("DataUtil",Msg::kInfo,1)
00470 << "EnergyCorrections -- Applying R_1_24_1 (Fall 2007) Near MC Correction Factor"
00471 << " (" << EnergyCorrections::cgffCedarR1_24_1MCND << ")\n";
00472 retval*=EnergyCorrections::cgffCedarR1_24_1MCND;
00473 }
00474
00475 }
00476 }
00477 else if(ReleaseType::IsCedar(release) && recoVers>=ReleaseType::kR1_24_2)
00478 {
00479 //Changed because we updated the GevPerMIP number in the MC
00480 // reprocessing. Bloody annoying.
00481 if(vc.GetDetector()==Detector::kFar) {
00482 MAXMSG("DataUtil",Msg::kInfo,1)
00483 << "EnergyCorrections -- Applying R_1_24_2 (Fall 2007) Far MC Correction Factor"
00484 << " (" << EnergyCorrections::cgffCedarR1_24_2MCFD << ")\n";
00485 retval*=EnergyCorrections::cgffCedarR1_24_2MCFD;
00486 }
00487 else if(vc.GetDetector()==Detector::kNear) {
00488 MAXMSG("DataUtil",Msg::kInfo,1)
00489 << "EnergyCorrections -- Applying R_1_24_2 (Fall 2007) Near MC Correction Factor"
00490 << " (" << EnergyCorrections::cgffCedarR1_24_2MCND << ")\n";
00491 retval*=EnergyCorrections::cgffCedarR1_24_2MCND;
00492 }
00493 }
00494 }
00495 else if(vc.GetSimFlag()==SimFlag::kData) {
00496 //Data corrections only available for Cedar_Phy
00497 //Once again we are going to have the option to use the old or
00498 // the new numbers
00499 if(whichCor==kVersion3) {
00500 //Use the old numbers from the Summer 2007 analysis
00501 if(recoVers>=ReleaseType::kCedarPhy) {
00502 if(vc.GetDetector()==Detector::kFar) {
00503 MAXMSG("DataUtil",Msg::kInfo,1)
00504 << "EnergyCorrections -- Applying CedarPhy (Summer 2007) Far Correction Factor"
00505 << " (" << EnergyCorrections::cgffCedarPhyDataFDOld << ")\n";
00506 retval*=EnergyCorrections::cgffCedarPhyDataFDOld;
00507 }
00508 else if(vc.GetDetector()==Detector::kNear) {
00509 MAXMSG("DataUtil",Msg::kInfo,1)
00510 << "EnergyCorrections -- Applying CedarPhy (Summer 2007) Near Correction Factor"
00511 << " (" << EnergyCorrections::cgffCedarPhyDataNDOld << ")\n";
00512 retval*=EnergyCorrections::cgffCedarPhyDataNDOld;
00513 }
00514 }
00515 }
00516 else {
00517 //Use the latest greatest numbers
00518 if(recoVers>=ReleaseType::kCedarPhy) {
00519 if(vc.GetDetector()==Detector::kFar) {
00520 MAXMSG("DataUtil",Msg::kInfo,1)
00521 << "EnergyCorrections -- Applying CedarPhy (Fall 2007) Far Correction Factor"
00522 << " (" << EnergyCorrections::cgffCedarPhyDataFD << ")\n";
00523 retval*=EnergyCorrections::cgffCedarPhyDataFD;
00524 }
00525 else if(vc.GetDetector()==Detector::kNear) {
00526 MAXMSG("DataUtil",Msg::kInfo,1)
00527 << "EnergyCorrections -- Applying CedarPhy (Fall 2007) Near Correction Factor"
00528 << " (" << EnergyCorrections::cgffCedarPhyDataND << ")\n";
00529 retval*=EnergyCorrections::cgffCedarPhyDataND;
00530 }
00531 }
00532 }
00533 }
00534 }
00535 }
00536
00537 return retval;
00538
00539 }
|
|
||||||||||||||||
|
Definition at line 729 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectMomentumFromRange(), and det. 00729 {
00730 const float m=0.1057;// mon mass
00731 float p = sqrt(E*E -m*m);
00732 float pcor = CorrectMomentumFromRange(p,isdata,det);
00733 return sqrt(pcor*pcor +m*m);
00734 }
|
|
||||||||||||||||
|
Definition at line 690 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectMomentumFromRange_Birch(), EnergyCorrections::CorrectMomentumFromRange_Cedar(), det, and EnergyCorrections::WarnUnknownVersion(). Referenced by EnergyCorrections::CorrectEnergyFromRange(), MadMKAnalysis::CreatePAN(), NCAnalysisModule::FillRecoInfo(), MadScanDisplay::RecoMKMuEnergy(), MadMKAnalysis::RecoMKMuEnergy(), MadEvDisplay::RecoMKMuEnergy(), MadQuantities::RecoMuEnergy(), and ANtpTrackInfoAna::RecoMuEnergy(). 00691 {
00692 float pcor=p;
00693 switch(fVersion){
00694 case kCedar:
00695 pcor=CorrectMomentumFromRange_Cedar(p,isdata,det);
00696 break;
00697 case kBirch:
00698 pcor=CorrectMomentumFromRange_Birch(p,isdata,det);
00699 break;
00700 case kUnknown:
00701 default:
00702 WarnUnknownVersion("CorrectMomentumFromRange()");
00703 pcor=CorrectMomentumFromRange_Birch(p,isdata,det);
00704 break;
00705 }
00706 return pcor;
00707 }
|
|
||||||||||||||||
|
Definition at line 817 of file EnergyCorrections.cxx. References det. Referenced by EnergyCorrections::CorrectMomentumFromRange(). 00817 {
00818 static const float c[4]={1.01334,0.05563,-0.05346,0.01205};
00819
00820 // correction for difference in data mc steel density
00821 if(isdata){
00822 // inital correction, pre-Oxford 2006
00823 //static const float dcor=7.755/7.87;// data/mc density
00824 float dcor=1;
00825 if (det==Detector::kNear) dcor=(7.85*2.563)/(7.87*2.54);
00826 else if(det==Detector::kFar) dcor=(7.85*2.558)/(7.87*2.54);
00827
00828 p*=dcor;
00829 }
00830 //
00831 float pcor=p/(c[0] + c[1]*log(p) + c[2]*pow(log(p), 2) + c[3]*pow(log(p),3));
00832 return pcor;
00833 }
|
|
||||||||||||||||
|
Definition at line 905 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::CorrectMomentumFromRange(). 00905 {
00906 return p;
00907 }
|
|
||||||||||||||||||||||||
|
Definition at line 797 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectShowerEnergyFar(), EnergyCorrections::CorrectShowerEnergyNear(), and det. Referenced by MadScanDisplay::Display(), MadScanDisplay::DrawTextBox(), MadEvDisplay::DrawTextBox(), NCAnalysisCuts::IsGoodShower(), MadMKAnalysis::RecoShwEnergy(), and ANtpShowerInfoAna::RecoShwEnergy(). 00799 {
00800 //People should not be using this function
00801 float ecor=E;
00802 if(det==Detector::kNear){
00803 ecor = CorrectShowerEnergyNear(E,st,mode,isdata);
00804 }
00805 else if(det==Detector::kFar){
00806 ecor = CorrectShowerEnergyFar(E,st,mode,isdata);
00807 }
00808
00809 return ecor;
00810
00811 }
|
|
||||||||||||||||||||
|
Definition at line 759 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectShowerEnergyFar_Birch(), EnergyCorrections::CorrectShowerEnergyFar_Cedar(), and EnergyCorrections::WarnUnknownVersion(). Referenced by EnergyCorrections::CorrectShowerEnergy(), MadQuantities::RecoShwEnergy(), MadBase::RecoShwEnergy(), and ANtpShowerInfoAna::RecoShwEnergy(). 00759 {
00760 //People should not be using this function
00761
00762
00763 float ecor=E;
00764 switch(fVersion){
00765 case kCedar:
00766 ecor=CorrectShowerEnergyFar_Cedar(E,st,mode,isdata);
00767 break;
00768 case kBirch:
00769 if(isdata) {
00770 // a correction for the FD MIP scale
00771 // for the beam data, one measured MIP
00772 // actually corresponds to 1.018 MIPs
00773 // so we must correct shower energy up
00774 const float mip_scale_correction=1.018;
00775 E*=mip_scale_correction;
00776 }
00777 ecor=CorrectShowerEnergyFar_Birch(E,st,mode,isdata);
00778 break;
00779 case kUnknown:
00780 default:
00781 WarnUnknownVersion("CorrectShowerEnergyFar()");
00782 if(isdata) {
00783 // a correction for the FD MIP scale
00784 // for the beam data, one measured MIP
00785 // actually corresponds to 1.018 MIPs
00786 // so we must correct shower energy up
00787 const float mip_scale_correction=1.018;
00788 E*=mip_scale_correction;
00789 }
00790 ecor=CorrectShowerEnergyFar_Birch(E,st,mode,isdata);
00791 break;
00792 }
00793 return ecor;
00794
00795 }
|
|
||||||||||||||||||||
|
Definition at line 875 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::CorrectShowerEnergyFar(), and EnergyCorrections::FullyCorrectShowerEnergy(). 00875 {
00876 // std::cout << "CorrectShowerEnergyFar_Birch: " << E << std::endl;
00877 float ecor=E;
00878 if(st==CandShowerHandle::kCC){
00879 if(mode==1){
00880 // Niki Correction
00881 ecor=((E)*(1.-0.12*exp(-0.12*E)));
00882 }
00883 else if(mode==2){
00884 // Andy Correction
00885 // ecor=(E)*(1.-0.2*exp(-0.2*E));
00886 ecor=E*(0.99-0.035*E*exp(-0.25*E));
00887 }
00888 }
00889 else if(st==CandShowerHandle::kWtCC){
00890 if(mode==1){
00891 // Niki Correction
00892 ecor=((E)*(1.+0.18*exp(-0.35*E)));
00893 }
00894 else if(mode==2){
00895 // Andy Correction
00896 E=ecor;
00897 }
00898 }
00899 return ecor;
00900 }
|
|
||||||||||||||||||||
|
Definition at line 925 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::CorrectShowerEnergyFar(), and EnergyCorrections::ShowerEnergyCorrectionFarCedar(). 00925 {
00926
00927 float ecor=E;
00928 if(st==CandShowerHandle::kCC){
00929 ecor = ecor*(0.950+0.277*exp(-ecor*1.64));
00930 }
00931 else if(st==CandShowerHandle::kWtCC){
00932 ecor = ecor*(0.957+0.271*exp(-ecor*1.64));
00933 }
00934 return ecor;
00935
00936 }
|
|
||||||||||||||||||||
|
Definition at line 737 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectShowerEnergyNear_Birch(), EnergyCorrections::CorrectShowerEnergyNear_Cedar(), and EnergyCorrections::WarnUnknownVersion(). Referenced by EnergyCorrections::CorrectShowerEnergy(), MadQuantities::RecoShwEnergy(), MadBase::RecoShwEnergy(), and ANtpShowerInfoAna::RecoShwEnergy(). 00737 {
00738 //People should not be using this function
00739
00740 float ecor=E;
00741 switch(fVersion){
00742 case kCedar:
00743 ecor=CorrectShowerEnergyNear_Cedar(E,st,mode,isdata);
00744 break;
00745 case kBirch:
00746 ecor=CorrectShowerEnergyNear_Birch(E,st,mode,isdata);
00747 break;
00748 case kUnknown:
00749 default:
00750 WarnUnknownVersion("CorrectShowerEnergyNear()");
00751 ecor=CorrectShowerEnergyNear_Birch(E,st,mode,isdata);
00752 break;
00753 }
00754 return ecor;
00755 }
|
|
||||||||||||||||||||
|
Definition at line 848 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::CorrectShowerEnergyNear(), and EnergyCorrections::FullyCorrectShowerEnergy(). 00848 {
00849
00850 // std::cout << "CorrectShowerEnergyNear_Birch: " << E << "\t" << mode << std::endl;
00851 float ecor=E;
00852 if(st==CandShowerHandle::kCC){
00853 if(mode==1){
00854 // Niki Correction
00855 ecor=E/1.18;
00856 }
00857 else if(mode==2){
00858 // Andy Correction
00859 ecor=((E/1.05)*(1.-0.35*exp(-0.18*E/1.06)));
00860 }
00861 }
00862 else if(st==CandShowerHandle::kWtCC){
00863 if(mode==1){
00864 // Niki Correction
00865 ecor=((E)*(1.+0.50*exp(-1.00*E)));
00866 }
00867 else if(mode==2){
00868 // Andy Correction
00869 ecor=E/1.03;
00870 }
00871 }
00872 return ecor;
00873 }
|
|
||||||||||||||||||||
|
Definition at line 913 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::CorrectShowerEnergyNear(), and EnergyCorrections::ShowerEnergyCorrectionNearCedar(). 00913 {
00914
00915 float ecor=E;
00916 if(st==CandShowerHandle::kCC){
00917 ecor = ecor*(0.921+0.231*exp(-ecor*1.63));
00918 }
00919 else if(st==CandShowerHandle::kWtCC){
00920 ecor = ecor*(0.924+0.235*exp(-ecor*1.63));
00921 }
00922 return ecor;
00923 }
|
|
||||||||||||||||
|
Definition at line 709 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectSignedMomentumFromCurvature_Birch(), EnergyCorrections::CorrectSignedMomentumFromCurvature_Cedar(), det, and EnergyCorrections::WarnUnknownVersion(). Referenced by MadMKAnalysis::CreatePAN(), NCAnalysisModule::FillRecoInfo(), MadMKAnalysis::RecoMKMuEnergy(), MadQuantities::RecoMuEnergy(), and ANtpTrackInfoAna::RecoMuEnergy(). 00709 {
00710
00711 float pcor=p;
00712 switch(fVersion){
00713 case kCedar:
00714 pcor=CorrectSignedMomentumFromCurvature_Cedar(p,isdata,det);
00715 break;
00716 case kBirch:
00717 pcor=CorrectSignedMomentumFromCurvature_Birch(p,isdata,det);
00718 break;
00719 case kUnknown:
00720 default:
00721 WarnUnknownVersion("CorrectSignedMomentumFromCurvature()");
00722 pcor=CorrectSignedMomentumFromCurvature_Birch(p,isdata,det);
00723 break;
00724 }
00725 return pcor;
00726 }
|
|
||||||||||||||||
|
Definition at line 835 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::CorrectSignedMomentumFromCurvature(). 00835 {
00836 // input is the signed momentum (e.g. p/q)
00837 // isdata and det are not used... but maybe in the future
00838 float pcor=p;
00839 if(pcor!=0) {
00840 // correction advertised in 1430-v2, J. Musser
00841 // note: for 1/p < 0 C=1, so correction only matters for mu+
00842 float C = (1.01+0.1*fabs(1/p))/(1.01-0.1*(1/p));
00843 pcor*=(1.0/C);
00844 }
00845 return pcor;
00846 }
|
|
||||||||||||||||
|
Definition at line 909 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::CorrectSignedMomentumFromCurvature(). 00909 {
00910 return p;
00911 }
|
|
||||||||||||||||
|
Definition at line 1207 of file EnergyCorrections.cxx. References VldContext::GetDetector(), VldContext::GetSimFlag(), and MAXMSG. Referenced by EnergyCorrections::FullyCorrectEnergyFromRange(), and EnergyCorrections::MomentumRangeCorrectionCedar(). 01208 {
01209 MAXMSG("DataUtil",Msg::kInfo,1)
01210 << "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";
01211 float eCor=E;
01212 if(vc.GetSimFlag()==SimFlag::kData && vc.GetDetector()==Detector::kNear) {
01213 eCor=(1.018*E)-0.009;
01214 }
01215 else {
01216 eCor=(1.010*E)-0.009;
01217 }
01218
01219 return eCor;
01220 }
|
|
||||||||||||||||||||
|
Definition at line 243 of file EnergyCorrections.cxx. References EnergyCorrections::EnergyRangeCorrectionCedar(), EnergyCorrections::FullyCorrectMomentumFromRange(), ReleaseType::IsBirch(), and ReleaseType::IsCedar(). 00247 {
00248 if(ReleaseType::IsBirch(release)) {
00249 const float m=0.1057;// muon mass
00250 float p = sqrt(E*E -m*m);
00251 float pcor = EnergyCorrections::FullyCorrectMomentumFromRange(p,vc,release,whichCor);
00252 return sqrt(pcor*pcor +m*m);
00253 }
00254 else if(ReleaseType::IsCedar(release)) {
00255 return EnergyCorrections::EnergyRangeCorrectionCedar(E,vc,whichCor);
00256 }
00257 return E;
00258 }
|
|
||||||||||||||||||||
|
Track Energy/Momentum Correction. INPUTS:
OUTPUT:
Definition at line 227 of file EnergyCorrections.cxx. References ReleaseType::IsBirch(), ReleaseType::IsCedar(), EnergyCorrections::MomentumRangeCorrectionBirch(), and EnergyCorrections::MomentumRangeCorrectionCedar(). Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), MadTVAnalysis::CreatePAN(), EnergyCorrections::FullyCorrectEnergyFromRange(), NCEventInfo::GetTrackEnergy(), MergeEvent::Reco(), MadQuantities::RecoMuEnergyNew(), ANtpTrackInfoAna::RecoMuEnergyNew(), and Anp::FillTrack::Run(). 00231 {
00232 float pcor=p;
00233 if(ReleaseType::IsBirch(release)) {
00234 pcor=EnergyCorrections::MomentumRangeCorrectionBirch(p,vc,whichCor);
00235 }
00236 else if(ReleaseType::IsCedar(release)) {
00237 pcor=EnergyCorrections::MomentumRangeCorrectionCedar(p,vc,whichCor);
00238 }
00239 return pcor;
00240
00241 }
|
|
||||||||||||||||||||||||
|
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 162 of file EnergyCorrections.cxx. References EnergyCorrections::CalibrationGroupEnergyCorrections(), EnergyCorrections::CorrectShowerEnergyFar_Birch(), EnergyCorrections::CorrectShowerEnergyNear_Birch(), VldContext::GetDetector(), ReleaseType::GetRecoInfo(), ReleaseType::IsBirch(), ReleaseType::IsCedar(), ReleaseType::IsDogwood(), EnergyCorrections::ShowerEnergyCorrectionFarCedar(), EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(), EnergyCorrections::ShowerEnergyCorrectionNearCedar(), and EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(). Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), NCEventInfo::GetShowerEnergy(), MadQuantities::RecoShwEnergyNew(), ANtpShowerInfoAna::RecoShwEnergyNew(), Anp::FillShower::Run(), and Anp::FillEnergy::Run(). 00167 {
00168
00169 //First step is to apply Calibration Group Corrections
00170 float eCor=EnergyCorrections::CalibrationGroupEnergyCorrections(E,vc,release,whichCor);
00171
00172 // Get the reconstruction version.
00173 ReleaseType::Release_t recoVers = ReleaseType::GetRecoInfo(release);
00174
00175 //Now need to apply Masaki's correction
00176 if(ReleaseType::IsBirch(release)) {
00177 int mode=1;
00178 if(whichCor==EnergyCorrections::kVersion2)
00179 mode=2;
00180 if(vc.GetDetector()==Detector::kNear)
00181 return EnergyCorrections::CorrectShowerEnergyNear_Birch(eCor,st,mode);
00182 else if(vc.GetDetector()==Detector::kFar)
00183 return EnergyCorrections::CorrectShowerEnergyFar_Birch(eCor,st,mode);
00184
00185 }
00186 else if(ReleaseType::IsCedar(release)) {
00187 //Now need to check version
00188 if(recoVers >= ReleaseType::kR1_24_3) {
00189 if(vc.GetDetector()==Detector::kNear)
00190 return EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(eCor,st,whichCor);
00191 else if(vc.GetDetector()==Detector::kFar)
00192 return EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(eCor,st,whichCor);
00193
00194 }
00195 else {
00196 if(vc.GetDetector()==Detector::kNear)
00197 return EnergyCorrections::ShowerEnergyCorrectionNearCedar(eCor,st,whichCor);
00198 else if(vc.GetDetector()==Detector::kFar)
00199 return EnergyCorrections::ShowerEnergyCorrectionFarCedar(eCor,st,whichCor);
00200 }
00201
00202 }
00203 else if(ReleaseType::IsDogwood(release)) {
00204
00205 }
00206
00207 return E;
00208 }
|
|
||||||||||||||||||||
|
Definition at line 260 of file EnergyCorrections.cxx. References ReleaseType::IsBirch(), ReleaseType::IsCedar(), EnergyCorrections::SignedMomentumCurvatureCorrectionBirch(), and EnergyCorrections::SignedMomentumCurvatureCorrectionCedar(). Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), MadTVAnalysis::CreatePAN(), NCEventInfo::GetTrackEnergy(), MergeEvent::Reco(), MadQuantities::RecoMuEnergyNew(), and ANtpTrackInfoAna::RecoMuEnergyNew(). 00264 {
00265 float pcor=p;
00266 if(ReleaseType::IsBirch(release)) {
00267 pcor=EnergyCorrections::SignedMomentumCurvatureCorrectionBirch(p,vc,whichCor);
00268 }
00269 else if(ReleaseType::IsCedar(release)) {
00270 pcor=EnergyCorrections::SignedMomentumCurvatureCorrectionCedar(p,vc,whichCor);
00271 }
00272 return pcor;
00273
00274 }
|
|
|
Definition at line 640 of file EnergyCorrections.cxx. References EnergyCorrections::fSubVersion, and s(). Referenced by EnergyCorrections::WarnUnknownVersion(). 00640 {
00641 std::string s;
00642 switch(fVersion){
00643 case kBirch:
00644 s+="BIRCH"; break;
00645 case kCedar:
00646 s+="CEDAR"; break;
00647 case kUnknown:
00648 default:
00649 s+="???";
00650 break;
00651 }
00652 std::ostringstream os; os<<"-v"<<fSubVersion<<std::ends;
00653 s+=os.str();
00654
00655 return s;
00656 }
|
|
||||||||||||
|
Definition at line 1026 of file EnergyCorrections.cxx. References MAXMSG. Referenced by EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(). 01028 {
01029 //From DocDB 3077_v3
01030 MAXMSG("DataUtil",Msg::kInfo,1)
01031 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB 3895_v4\n";
01032 float recoE=energy;
01033 float le = log10(fmin(fmax(energy,0.3),20));
01034 float we=0;
01035 if(st==CandShowerHandle::kCC){
01036 recoE = energy*( 1.15566-0.286445*le+ 0.122705*(2.*pow(le,2)-1)-0.0183855*(4.*pow(le,3)-3.*le));
01037 }
01038 else if(st==CandShowerHandle::kWtCC) {
01039 we = fmin(fmax(energy,0.3),20);
01040 recoE= energy*(0.971346+0.00314063*we-0.000135242*pow(we,2)+0.626512*TMath::Exp(-we*3.26053));
01041 }
01042 return recoE;
01043 }
|
|
||||||||||||
|
Definition at line 1067 of file EnergyCorrections.cxx. References MAXMSG. 01069 {
01070 //From DocDB 3077_v3
01071 MAXMSG("DataUtil",Msg::kInfo,1)
01072 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB 3895_v4\n";
01073 float tempE=energy/EnergyCorrections::cgffCedarPhyDaikonFD;
01074 float recoE=tempE;
01075 float le = log10(fmin(fmax(tempE,0.3),20));
01076 float we=0;
01077 if(st==CandShowerHandle::kCC){
01078 recoE = tempE*( 1.15566-0.286445*le+ 0.122705*(2.*pow(le,2)-1)-0.0183855*(4.*pow(le,3)-3.*le));
01079 }
01080 else if(st==CandShowerHandle::kWtCC) {
01081 we = fmin(fmax(energy,0.3),20);
01082 recoE= energy*(0.971346+0.00314063*we-0.000135242*pow(we,2)+0.626512*TMath::Exp(-we*3.26053));
01083 }
01084 return recoE;
01085 }
|
|
||||||||||||
|
Definition at line 1105 of file EnergyCorrections.cxx. References MAXMSG. Referenced by EnergyCorrections::ShowerEnergyCorrectionFarCedar(). 01107 {
01108 //From DocDB 3077_v3
01109 MAXMSG("DataUtil",Msg::kInfo,1)
01110 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Far Detector from DocDB 3077_v3\n";
01111 float recoE=energy;
01112 // std::cout << "Old:\t" << recoE << std::endl;
01113 float le = log10(fmax(energy,0.2));
01114 if(st==CandShowerHandle::kCC){
01115 recoE = energy*(1.113584-0.299139*le+0.145169*(2.*pow(le,2)-1)-0.0232853*(4.*pow(le,3)-3.*le));
01116 }
01117 else if (st==CandShowerHandle::kWtCC){
01118 recoE= energy*(1.052872-0.19185*le+0.102449*(2.*pow(le,2)-1)-0.0182317*(4.*pow(le,3)-3.*le));
01119 }
01120 return recoE;
01121 }
|
|
||||||||||||
|
Definition at line 1144 of file EnergyCorrections.cxx. References MAXMSG. Referenced by EnergyCorrections::ShowerEnergyCorrectionFarCedar(), and EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(). 01146 {
01147 //From DocDB 3077_v3
01148 MAXMSG("DataUtil",Msg::kInfo,1)
01149 << "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";
01150 float tempE=energy/EnergyCorrections::cgffCedarR1_24_1MCFD;
01151 float recoE=tempE;
01152 // std::cout << "New:\t" <<recoE << std::endl;
01153 float le = log10(fmax(tempE,0.2));
01154 if(st==CandShowerHandle::kCC){
01155 recoE = tempE*(1.113584-0.299139*le+0.145169*(2.*pow(le,2)-1)-0.0232853*(4.*pow(le,3)-3.*le));
01156 }
01157 else if (st==CandShowerHandle::kWtCC){
01158 recoE= tempE*(1.052872-0.19185*le+0.102449*(2.*pow(le,2)-1)-0.0182317*(4.*pow(le,3)-3.*le));
01159 }
01160 return recoE;
01161 }
|
|
||||||||||||
|
Definition at line 1007 of file EnergyCorrections.cxx. References MAXMSG. Referenced by EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(). 01009 {
01010 //From DocDB 3077_v3
01011 MAXMSG("DataUtil",Msg::kInfo,1)
01012 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB 3895_v4\n";
01013 float recoE=energy;
01014 float le = log10(fmin(fmax(energy,0.3),20));
01015 float we=0;
01016 if(st==CandShowerHandle::kCC){
01017 recoE = energy*(1.10973-0.248714*le +0.116769*(2.*pow(le,2)-1)-0.0200268*(4.*pow(le,3)-3.*le));
01018 }
01019 else if(st==CandShowerHandle::kWtCC) {
01020 we = fmin(fmax(energy,0.3),20);
01021 recoE= energy*(0.999461-0.00334628*we+0.0000563316*pow(we,2)+0.35232*TMath::Exp(-we*1.76594));
01022 }
01023 return recoE;
01024 }
|
|
||||||||||||
|
Definition at line 1047 of file EnergyCorrections.cxx. References MAXMSG. 01049 {
01050 //From DocDB 3077_v3
01051 MAXMSG("DataUtil",Msg::kInfo,1)
01052 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB 3895_v4\n";
01053 float tempE=energy/EnergyCorrections::cgffCedarPhyDaikonND;
01054 float recoE=tempE;
01055 float le = log10(fmin(fmax(tempE,0.3),20));
01056 float we=0;
01057 if(st==CandShowerHandle::kCC){
01058 recoE = tempE*(1.10973-0.248714*le +0.116769*(2.*pow(le,2)-1)-0.0200268*(4.*pow(le,3)-3.*le));
01059 }
01060 else if(st==CandShowerHandle::kWtCC) {
01061 we = fmin(fmax(energy,0.3),20);
01062 recoE= energy*(0.999461-0.00334628*we+0.0000563316*pow(we,2)+0.35232*TMath::Exp(-we*1.76594));
01063 }
01064 return recoE;
01065 }
|
|
||||||||||||
|
Definition at line 1088 of file EnergyCorrections.cxx. References MAXMSG. Referenced by EnergyCorrections::ShowerEnergyCorrectionNearCedar(). 01090 {
01091 //From DocDB 3077_v3
01092 MAXMSG("DataUtil",Msg::kInfo,1)
01093 << "EnergyCorrections -- Applying Masaki (Reco to True) Correction for Near Detector from DocDB 3077_v3\n";
01094 float recoE=energy;
01095 float le = log10(fmax(energy,0.2));
01096 if(st==CandShowerHandle::kCC){
01097 recoE = energy*(1.078984-0.249843*le+0.134518*(2.*pow(le,2)-1)-0.025613*(4.*pow(le,3)-3.*le));
01098 }
01099 else if(st==CandShowerHandle::kWtCC) {
01100 recoE= energy*(1.070553-0.207148*le+0.0943124*(2.*pow(le,2)-1)-0.0153231*(4.*pow(le,3)-3.*le));
01101 }
01102 return recoE;
01103 }
|
|
||||||||||||
|
Definition at line 1125 of file EnergyCorrections.cxx. References MAXMSG. Referenced by EnergyCorrections::ShowerEnergyCorrectionNearCedar(), and EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(). 01127 {
01128 //From DocDB 3077_v3
01129 MAXMSG("DataUtil",Msg::kInfo,1)
01130 << "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";
01131 float tempE=energy/EnergyCorrections::cgffCedarR1_24_1MCND;
01132 float recoE=tempE;
01133 float le = log10(fmax(tempE,0.2));
01134 if(st==CandShowerHandle::kCC){
01135 recoE = tempE*(1.078984-0.249843*le+0.134518*(2.*pow(le,2)-1)-0.025613*(4.*pow(le,3)-3.*le));
01136 }
01137 else if(st==CandShowerHandle::kWtCC) {
01138 recoE= tempE*(1.070553-0.207148*le+0.0943124*(2.*pow(le,2)-1)-0.0153231*(4.*pow(le,3)-3.*le));
01139 }
01140 return recoE;
01141 }
|
|
||||||||||||||||
|
Definition at line 1164 of file EnergyCorrections.cxx. References VldContext::GetDetector(), and VldContext::GetSimFlag(). Referenced by EnergyCorrections::FullyCorrectMomentumFromRange(). 01165 {
01166 static const float c[4]={1.01334,0.05563,-0.05346,0.01205};
01167
01168 // correction for difference in data mc steel density
01169 if(vc.GetSimFlag()==SimFlag::kData){
01170 // inital correction, pre-Oxford 2006
01171 //static const float dcor=7.755/7.87;// data/mc density
01172 float dcor=1;
01173 if (vc.GetDetector()==Detector::kNear) dcor=(7.85*2.563)/(7.87*2.54);
01174 else if(vc.GetDetector()==Detector::kFar) dcor=(7.85*2.558)/(7.87*2.54);
01175
01176 p*=dcor;
01177 }
01178 //
01179 float pcor=p/(c[0] + c[1]*log(p) + c[2]*pow(log(p), 2) + c[3]*pow(log(p),3));
01180 return pcor;
01181 }
|
|
||||||||||||||||
|
Definition at line 1198 of file EnergyCorrections.cxx. References EnergyCorrections::EnergyRangeCorrectionCedar(). Referenced by EnergyCorrections::FullyCorrectMomentumFromRange(). 01199 {
01200 //return p;
01201 const float m=0.1057;// muon mass
01202 float E = sqrt(p*p+m*m);
01203 float eCor = EnergyCorrections::EnergyRangeCorrectionCedar(E,vc,whichCor);
01204 return sqrt(eCor*eCor-m*m);
01205 }
|
|
||||||||||||
|
Definition at line 635 of file EnergyCorrections.cxx. References EnergyCorrections::fSubVersion, and EnergyCorrections::fVersion. Referenced by MNtpModule::Ana(), MuonRemovalInfoAna::Analyze(), ANtpTrackInfoAna::Analyze(), ANtpShowerInfoAna::Analyze(), and NCAnalysisCuts::IsGoodShower(). 00635 {
00636 fVersion=ver;
00637 fSubVersion=subver;
00638 }
|
|
||||||||||||
|
Definition at line 550 of file EnergyCorrections.cxx. References VldContext::GetDetector(), VldContext::GetSimFlag(), EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(), and EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(). Referenced by CandShowerHandle::CalibrateEnergy(). 00551 {
00552 //Two things to do:
00553 //i) apply Calibration Group tweaks
00554 //ii) apply Maskai's Reco->Truth formula
00555 float eCor=E;
00556 if(vc.GetDetector()==Detector::kFar) {
00557 //Cal group corrections
00558 if(vc.GetSimFlag()==SimFlag::kData) {
00559 eCor*=EnergyCorrections::cgffCedarPhyDataFD;
00560 }
00561 else if(vc.GetSimFlag()==SimFlag::kMC) {
00562 eCor*=EnergyCorrections::cgffCedarPhyDaikonFD;
00563 }
00564 //Reco-Truth Conversion
00565 eCor=EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(eCor,CandShowerHandle::kCC,EnergyCorrections::kDefault);
00566 }
00567 else if(vc.GetDetector()==Detector::kNear) {
00568 //Cal group corrections
00569 if(vc.GetSimFlag()==SimFlag::kData) {
00570 eCor*=EnergyCorrections::cgffCedarPhyDataND;
00571 }
00572 else if(vc.GetSimFlag()==SimFlag::kMC) {
00573 eCor*=EnergyCorrections::cgffCedarPhyDaikonND;
00574 }
00575 //Reco-Truth Conversion
00576 eCor=EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(eCor,CandShowerHandle::kCC,EnergyCorrections::kDefault);
00577 }
00578
00579 return eCor;
00580
00581 }
|
|
||||||||||||||||
|
Definition at line 990 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectShowerEnergyFar_Cedar(), EnergyCorrections::MasakiFarMay17th(), and EnergyCorrections::MasakiFarMay17thScaled(). Referenced by EnergyCorrections::FullyCorrectShowerEnergy(). 00993 {
00994 switch(whichCor) {
00995 case EnergyCorrections::kVersion2:
00996 return EnergyCorrections::CorrectShowerEnergyFar_Cedar(energy,st);
00997 case EnergyCorrections::kVersion1:
00998 return EnergyCorrections::MasakiFarMay17th(energy,st);
00999 case EnergyCorrections::kVersion3:
01000 case EnergyCorrections::kDefault:
01001 default:
01002 return EnergyCorrections::MasakiFarMay17thScaled(energy,st);
01003 }
01004 return energy;
01005 }
|
|
||||||||||||||||
|
Definition at line 956 of file EnergyCorrections.cxx. References EnergyCorrections::MasakiFarDec15th(), and EnergyCorrections::MasakiFarMay17thScaled(). Referenced by EnergyCorrections::FullyCorrectShowerEnergy(), EnergyCorrections::ShowerEnergyConversionDogwood(), and EnergyCorrections::WeightedShowerEnergyConversionDogwood(). 00959 {
00960 switch(whichCor) {
00961 case EnergyCorrections::kVersion4:
00962 return EnergyCorrections::MasakiFarMay17thScaled(energy,st);
00963 case EnergyCorrections::kDefault:
00964 default:
00965 return EnergyCorrections::MasakiFarDec15th(energy,st);
00966 }
00967 return energy;
00968 }
|
|
||||||||||||||||
|
Definition at line 972 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectShowerEnergyNear_Cedar(), EnergyCorrections::MasakiNearMay17th(), and EnergyCorrections::MasakiNearMay17thScaled(). Referenced by EnergyCorrections::FullyCorrectShowerEnergy(). 00975 {
00976
00977 switch(whichCor) {
00978 case EnergyCorrections::kVersion2:
00979 return EnergyCorrections::CorrectShowerEnergyNear_Cedar(energy,st);
00980 case EnergyCorrections::kVersion1:
00981 return EnergyCorrections::MasakiNearMay17th(energy,st);
00982 case EnergyCorrections::kVersion3:
00983 case EnergyCorrections::kDefault:
00984 default:
00985 return EnergyCorrections::MasakiNearMay17thScaled(energy,st);
00986 }
00987 return energy;
00988 }
|
|
||||||||||||||||
|
Definition at line 941 of file EnergyCorrections.cxx. References EnergyCorrections::MasakiNearDec15th(), and EnergyCorrections::MasakiNearMay17thScaled(). Referenced by EnergyCorrections::FullyCorrectShowerEnergy(), EnergyCorrections::ShowerEnergyConversionDogwood(), and EnergyCorrections::WeightedShowerEnergyConversionDogwood(). 00944 {
00945
00946 switch(whichCor) {
00947 case EnergyCorrections::kVersion4:
00948 return EnergyCorrections::MasakiNearMay17thScaled(energy,st);
00949 case EnergyCorrections::kDefault:
00950 default:
00951 return EnergyCorrections::MasakiNearDec15th(energy,st);
00952 }
00953 return energy;
00954 }
|
|
||||||||||||||||
|
Definition at line 1183 of file EnergyCorrections.cxx. Referenced by EnergyCorrections::FullyCorrectSignedMomentumFromCurvature(). 01183 {
01184 // input is the signed momentum (e.g. p/q)
01185 // isdata and det are not used... but maybe in the future
01186 float pcor=p;
01187 if(pcor!=0) {
01188 // correction advertised in 1430-v2, J. Musser
01189 // note: for 1/p < 0 C=1, so correction only matters for mu+
01190 float C = (1.01+0.1*fabs(1/p))/(1.01-0.1*(1/p));
01191 pcor*=(1.0/C);
01192 }
01193 return pcor;
01194 }
|
|
||||||||||||||||
|
Definition at line 1222 of file EnergyCorrections.cxx. References MAXMSG. Referenced by EnergyCorrections::FullyCorrectSignedMomentumFromCurvature(). 01223 {
01224 MAXMSG("DataUtil",Msg::kInfo,1)
01225 << "EnergyCorrections -- Not applying momentum from curvature correction for Cedar\n";
01226 return p;
01227 }
|
|
|
Definition at line 675 of file EnergyCorrections.cxx. References EnergyCorrections::CorrectionVersion_t, and s(). 00675 {
00676 CorrectionVersion_t ver = kUnknown;
00677 std::string s=name;
00678
00679 if(s.find("R1_18")!=std::string::npos){
00680 ver=EnergyCorrections::kBirch;
00681 }
00682 else if(s.find("cedar")!=std::string::npos){
00683 ver=EnergyCorrections::kCedar;
00684 }
00685 return ver;
00686 }
|
|
|
Definition at line 658 of file EnergyCorrections.cxx. References EnergyCorrections::GetCorrectionAsString(). Referenced by EnergyCorrections::CorrectMomentumFromRange(), EnergyCorrections::CorrectShowerEnergyFar(), EnergyCorrections::CorrectShowerEnergyNear(), and EnergyCorrections::CorrectSignedMomentumFromCurvature(). 00658 {
00659 static Short_t nwarn=0;
00660 if(nwarn<=9){
00661 std::cerr<<"Energy Corrections: In "<<caller_routine
00662 <<"Energy Corrections: Warning, unknown correction version "
00663 <<GetCorrectionAsString()
00664 <<"Energy Corrections: Defaulting to Birch era corrections.\n"
00665 <<"Energy Corrections: Please Call SetCorrectionVersion() in the future.\n"
00666 <<std::endl;
00667 nwarn++;
00668 }
00669 if(nwarn==9){
00670 std::cerr<<"Energy Corrections: last message of this type..."<<std::endl;
00671 }
00672
00673 }
|
|
||||||||||||
|
Definition at line 588 of file EnergyCorrections.cxx. References VldContext::GetDetector(), VldContext::GetSimFlag(), EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(), and EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(). Referenced by CandShowerHandle::CalibrateEnergy(). 00589 {
00590 //Two things to do:
00591 //i) apply Calibration Group tweaks
00592 //ii) apply Maskai's Reco->Truth formula
00593 float eCor=E;
00594 if(vc.GetDetector()==Detector::kFar) {
00595 //Cal group corrections
00596 if(vc.GetSimFlag()==SimFlag::kData) {
00597 eCor*=EnergyCorrections::cgffCedarPhyDataFD;
00598 }
00599 else if(vc.GetSimFlag()==SimFlag::kMC) {
00600 eCor*=EnergyCorrections::cgffCedarPhyDaikonFD;
00601 }
00602 //Reco-Truth Conversion
00603 eCor=EnergyCorrections::ShowerEnergyCorrectionFarCedarPhyBhcurve(eCor,CandShowerHandle::kWtCC,EnergyCorrections::kDefault);
00604 }
00605 else if(vc.GetDetector()==Detector::kNear) {
00606 //Cal group corrections
00607 if(vc.GetSimFlag()==SimFlag::kData) {
00608 eCor*=EnergyCorrections::cgffCedarPhyDataND;
00609 }
00610 else if(vc.GetSimFlag()==SimFlag::kMC) {
00611 eCor*=EnergyCorrections::cgffCedarPhyDaikonND;
00612 }
00613 //Reco-Truth Conversion
00614 eCor=EnergyCorrections::ShowerEnergyCorrectionNearCedarPhyBhcurve(eCor,CandShowerHandle::kWtCC,EnergyCorrections::kDefault);
00615 }
00616
00617 return eCor;
00618
00619 }
|
1.3.9.1