00001 #include "RecoParticleFlow/PFClusterTools/interface/LinearCalibration.h" 00002 00003 using namespace pftools; 00004 00005 LinearCalibration::LinearCalibration() : 00006 a_(0), b_(0), c_(0) { 00007 } 00008 00009 LinearCalibration::LinearCalibration(CalibrationTarget t, double a, double b, 00010 double c) : 00011 a_(a), b_(b), c_(c) { 00012 targ_ = t; 00013 prov_ = LINEAR; 00014 } 00015 00016 LinearCalibration::LinearCalibration(CalibrationTarget t, double b, double c) : 00017 a_(-1.0), b_(b), c_(c) { 00018 targ_ = t; 00019 prov_ = LINEAR; 00020 00021 } 00022 00023 LinearCalibration::~LinearCalibration() { 00024 } 00025 00026 void LinearCalibration::calibrateCore(const CalibrationResultWrapper& crwInput, 00027 CalibrationResultWrapper& crwOutput) { 00028 if (targ_ == UNDEFINED) { 00029 std::cout << __PRETTY_FUNCTION__ << ": WARNING! Target is undefined!\n"; 00030 return; 00031 } else { 00032 crwOutput.reset(); 00033 crwOutput.target_ = Calibration::targ_; 00034 crwOutput.provenance_ = LINEAR; 00035 00036 crwOutput.ecalEnergy_ = b_ * crwInput.ecalEnergy_; 00037 crwOutput.hcalEnergy_ = c_ * crwInput.hcalEnergy_; 00038 crwOutput.particleEnergy_ = a_ + crwOutput.ecalEnergy_ 00039 + crwOutput.hcalEnergy_; 00040 crwOutput.truthEnergy_ = crwInput.truthEnergy_; 00041 crwOutput.compute(); 00042 00043 } 00044 00045 } 00046 00047 std::ostream& pftools::operator<<(std::ostream& s, const LinearCalibration& lc) { 00048 s << "LinearCalibration: a, b, c = {" << lc.a_ << ", " << lc.b_ << ", " << lc.c_ << "}\n"; 00049 return s; 00050 }