00001 #ifndef __TMARH1ELECCALIBRATION_H
00002 #define __TMARH1ELECCALIBRATION_H
00003 #include <TLorentzVector.h>
00004 #include "H1Calculator/H1CalcTrackExtrapol.h"
00005 #include "TMarH1LarCalParameters.h"
00006 
00007 using namespace std;
00008  
00009 class TMarH1ElecCalibration : 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   TMarH1LarCalParameters* 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   TMarH1ElecCalibration(Bool_t DoStackWiseCalibration,
00047                     Bool_t DoZimpactWiseCalibration,
00048                     Bool_t DoResolutionSmearing,
00049                     Bool_t UseTrackTheta = false, Bool_t UseTrackPhi = true);
00050   ~TMarH1ElecCalibration();
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(TMarH1ElecCalibration, 1)  
00068  
00069 };
00070 #endif