00001 00002 #ifndef CELLCORRECTIONALG_H 00003 #define CELLCORRECTIONALG_H 00004 00005 #include "Headers.h" 00006 #include "Event.h" 00007 #include "Geometry.h" 00008 #include "SystemAlg.h" 00009 00010 #include "NoiseAlg.h" 00011 #include "CalibrationAlg.h" 00012 00013 #include <string> 00014 #include <map> 00015 00016 using std::string; 00017 using std::map; 00018 00019 /*! -Class: CellCorrectionAlg 00020 - Author: Michel Lefebvre 00021 - Date: 13/8/2003 00022 - Description: CellCorrectionAlg is a systemAlg that computes cell signal correction factors 00023 - for HV effects 00024 - for sampling fraction effects 00025 - for global timing effects 00026 Corrected signal is obtained by multiplying the signal by the correction factors 00027 */ 00028 class CellCorrectionAlg : public SystemAlg { 00029 public: 00030 00031 /** The user should never need to use this contructor 00032 * @param event A pointer in the event. Information contained in the event 00033 * gets refreshed before the execute method is run 00034 * @param hecGeom Pointer to the singleton Geometry object 00035 * @param runHeader Pointer to the singleton HecRunHeader object 00036 */ 00037 00038 CellCorrectionAlg(Event* event, Geometry* hecGeom, Headers* runHeader); 00039 00040 //! Gets run once at the begining of the event Loop 00041 bool initialize(); 00042 00043 //! Gets run for every event 00044 bool execute(); 00045 00046 //! Gets run after all events have been executed 00047 bool finalize(); 00048 00049 //################################ 00050 // hec public methods 00051 00052 /** Returns a correction factor that corrects for known HV problems 00053 * @param febno channel febno 00054 */ 00055 float hecHVCorrection(int febno); 00056 00057 /** Returns a correction factor that corrects for sampling fraction 00058 * The HEC first wheel is associated with a factor of 1. 00059 * @param febno channel febno 00060 */ 00061 float hecSamplingFractionCorrection(int febno); 00062 00063 /** Returns a correction factor that corrects for global time 00064 * (TDC or global cubic) signal dependency due to imperfect digital 00065 * filtering weights. 00066 * @param febno channel febno 00067 */ 00068 float hecGlobalTimeCorrection(int febno); 00069 00070 //################################ 00071 // emec public methods 00072 00073 /** Returns a correction factor that corrects for known HV problems 00074 * and/or emec HV features 00075 * @param febno channel febno 00076 */ 00077 float emecHVCorrection(int febno); 00078 00079 /** Returns a correction factor that corrects for sampling fraction 00080 * @param febno channel febno 00081 */ 00082 float emecSamplingFractionCorrection(int febno); 00083 00084 /** Returns a correction factor that corrects for global time 00085 * (TDC or global cubic) signal dependency due to imperfect digital 00086 * filtering weights. 00087 * @param febno channel febno 00088 */ 00089 float emecGlobalTimeCorrection(int febno); 00090 00091 /** Returns the LAr gap thickness (cm) in the emec for a given rho (cm) 00092 * @param rho distance to the z axis of the local detector coordinate system 00093 */ 00094 float emecGapThickness(float rho); 00095 00096 //################################ 00097 // other public methods 00098 00099 /** Computes the electron drift velocity (cm/ns) in LAr given 00100 * the electric field stregth (kV/cm) 00101 * @param EField electric field stregth (kV/cm) 00102 */ 00103 float LArDriftVelocity(float EField); 00104 00105 private: 00106 00107 //################################ 00108 // private variables 00109 00110 Geometry* m_geo; 00111 Event* m_event; 00112 Headers* m_runHeader; 00113 00114 //################################ 00115 // other private variables and methods 00116 00117 }; 00118 00119 #endif