00001 #ifndef __H1ELECCALIBRATION_H
00002 #define __H1ELECCALIBRATION_H
00003 #include <TLorentzVector.h>
00004 #include "H1Calculator/H1CalcTrackExtrapol.h"
00005 #include "H1LarCalParameters.h"
00006
00007 using namespace std;
00008
00009 class H1ElecCalibration : public TObject
00010 {
00011
00012 private:
00013
00014 void MakeVertexElectron();
00015
00016 const TLorentzVector& GetElectronVector();
00017
00018 Bool_t IsGoodTrack();
00019
00020
00021
00022 Bool_t bUseTrackTheta;
00023 Bool_t bUseTrackPhi;
00024
00025 Bool_t bDoStackWiseCalibration;
00026 Bool_t bDoZimpactWiseCalibration;
00027 Bool_t bDoForwardWheelWiseCalibration;
00028 Bool_t bDoResolutionSmearing;
00029
00030 H1LarCalParameters* fCalibration;
00031
00032 H1CalcTrackExtrapol* fExtrapol;
00033
00034 TLorentzVector fElectronTrack;
00035 TLorentzVector fElectronCluster;
00036 TLorentzVector fCalibratedElectron;
00037
00038 Int_t fCharge;
00039 Int_t fLinkedTrackType;
00040
00041 Float_t fElectronTheta;
00042 Float_t fElectronPhi;
00043
00044 public:
00045
00046 H1ElecCalibration(Bool_t DoStackWiseCalibration,
00047 Bool_t DoZimpactWiseCalibration,
00048 Bool_t DoResolutionSmearing,
00049 Bool_t UseTrackTheta = false, Bool_t UseTrackPhi = true);
00050 ~H1ElecCalibration();
00051
00052
00053 void DoStackWiseCalibration(Bool_t flag = true) {bDoStackWiseCalibration = flag;};
00054 void DoZimpactWiseCalibration(Bool_t flag = true) {bDoZimpactWiseCalibration = flag;};
00055 void DoResolutionSmearing(Bool_t flag = true) {bDoResolutionSmearing = flag;};
00056
00057
00058 const TLorentzVector& GetElecCalibration(const TLorentzVector& UncalibratedElectron,
00059 const TLorentzVector& ElectronTrack,
00060 Int_t Charge, Float_t ZVertex,
00061 Bool_t IsMC, Int_t RunPeriod,
00062 Int_t LinkedTrackType);
00063
00064
00065 public:
00066
00067 ClassDef(H1ElecCalibration, 1)
00068
00069 };
00070 #endif