00001 #ifndef EXERCISES3_H_
00002 #define EXERCISES3_H_
00003
00004 #include "RecoParticleFlow/PFClusterTools/interface/Calibratable.h"
00005 #include "RecoParticleFlow/PFClusterTools/interface/Calibrator.h"
00006 #include "RecoParticleFlow/PFClusterTools/interface/CalibrationTarget.h"
00007 #include "RecoParticleFlow/PFClusterTools/interface/DetectorElement.h"
00008 #include "RecoParticleFlow/PFClusterTools/interface/CalibrationProvenance.h"
00009 #include "RecoParticleFlow/PFClusterTools/interface/SpaceManager.h"
00010 #include "RecoParticleFlow/PFClusterTools/interface/PFClusterCalibration.h"
00011
00012 #include <string>
00013 #include <vector>
00014 #include <TFile.h>
00015 #include <TTree.h>
00016 #include <TChain.h>
00017 #include <fstream>
00018
00019
00020 namespace pftools {
00021 class IO;
00022
00023 class Exercises3 {
00024 public:
00025
00026 Exercises3(IO* options);
00027
00028 virtual ~Exercises3();
00029
00030 void calibrateCalibratables(TChain& sourceTree,
00031 const std::string& exercisefile);
00032
00033
00034
00035 void evaluateCalibrator(SpaceManagerPtr s, CalibratorPtr c, TTree& tree,
00036 Calibratable* calibrated, DetectorElementPtr ecal,
00037 DetectorElementPtr hcal, DetectorElementPtr offset, CalibrationProvenance cp, CalibrationProvenance cpCorr = NONE);
00038
00039
00040 void evaluateSpaceManager(SpaceManagerPtr s, std::vector<DetectorElementPtr> detEls);
00041
00042
00043 void setTarget(CalibrationTarget t) {
00044 target_ = t;
00045 }
00046
00047
00048 void getCalibrations(SpaceManagerPtr s);
00049
00050 private:
00051
00052 Exercises3(const Exercises3&);
00053 void operator=(const Exercises3&);
00054
00055
00056 bool withOffset_;
00057 CalibrationTarget target_;
00058 unsigned threshold_;
00059 std::vector<DetectorElementPtr> elements_;
00060 IO* options_;
00061 std::ofstream calibResultsFile_;
00062 unsigned debug_;
00063 PFClusterCalibration clusterCalibration_;
00064
00065 };
00066 }
00067
00068 #endif