00001 #ifndef TTRDMUENSTERPROC_H 00002 #define TTRDMUENSTERPROC_H 00003 00004 #include "TSpadicEvent.h" 00005 #include "TSpadicV10Event.h" 00006 #include "TEpicsEvent.h" 00007 #include "TRocEvent.h" 00008 #include "TMbsCrateEvent.h" 00009 #include "TBeamMonitorEvent.h" 00010 #include "TTRDMuensterFrankfurtEvent.h" 00011 #include "TTRDMuensterFrankfurtParam.h" 00012 00013 #include "TGo4Picture.h" 00014 #include "TH1.h" 00015 #include "TH2.h" 00016 #include "TF1.h" 00017 #include "TLatex.h" 00018 #include "TLine.h" 00019 #include "TGo4WinCond.h" 00020 #include "TCBMBeamtimeProc.h" 00021 00022 #include "TFiberHodEvent.h" 00023 00024 #include "TPrincipal.h" 00025 #include "TMatrix.h" 00026 00027 class TTRDMuensterFrankfurtProc : public TCBMBeamtimeProc { 00028 public: 00029 00030 TTRDMuensterFrankfurtProc(const char* name = 0); 00031 virtual ~TTRDMuensterFrankfurtProc(); 00032 00033 virtual void InitEvent(TGo4EventElement*); 00034 00035 /* this is the main processing function here*/ 00036 virtual void FinalizeEvent(); 00037 00038 void CancelNoise_Cova(Int_t sid, TH1* inPulse[NUM_SPADIC_CHA], TH1* outPulse[NUM_SPADIC_CHA], TSpadicData* theSpadic, bool debug); 00039 00040 void PulseFitter(TH1* Pulse, Double_t hitTime, Double_t maxAmpl, Int_t sid); 00041 00042 protected: 00044 TSpadicEvent * fSpadicInputEvent; 00045 TSpadicV10Event * fSpadicV10InputEvent; 00046 TEpicsEvent* fEpicsInputEvent; 00047 TMbsCrateEvent * fCrateInputEvent; 00048 TTRDMuensterFrankfurtEvent * fOutputEvent; 00049 TBeamMonitorEvent* fBeamEvent; 00050 TFiberHodEvent* fHodo1; 00051 TFiberHodEvent* fHodo2; 00052 00053 TF1 *pulseFit[MAX_SPADIC]; 00054 TH1 *fSpadic_S2N; 00055 TH1 *fSpadic_S2Ncleaned; 00056 TH1 *fSpadic_S2Ncnt; 00057 //TH2 *fSpadic_Shape2D[MAX_SPADIC][SPADIC_TRACE_SIZE]; 00058 TH1 *fSpadic_gainConstantFit[MAX_SPADIC]; 00059 TH1 *fSpadic_timeConstantFit[MAX_SPADIC]; 00060 TH1 *fSpadic_delayFit[MAX_SPADIC]; 00061 TH1 *fSpadic_baselineFit[MAX_SPADIC]; 00062 TH1 *fSpadic_chiSquareFit[MAX_SPADIC]; 00063 TH1 *fSpadic_input[MAX_SPADIC][NUM_SPADIC_CHA]; 00064 TH1 *fSpadic_baseline[MAX_SPADIC][NUM_SPADIC_CHA]; 00065 TH1 *fSpadic_output[MAX_SPADIC][NUM_SPADIC_CHA]; 00066 TH1 *fSpadic_CorrMatrix[MAX_SPADIC][NUM_SPADIC_CHA]; 00067 TH2 *fSpadic_CorrMatrix_hitTime[MAX_SPADIC][NUM_SPADIC_CHA]; 00068 TH2 *fSpadic_CorrMatrix_maxAmpl[MAX_SPADIC][NUM_SPADIC_CHA]; 00069 TH1 *fSpadic_ADCdistMF[MAX_SPADIC][NUM_SPADIC_CHA]; 00070 TH1 *fSpadic_NoiseDistMF[MAX_SPADIC]; 00071 TH2 *fSpadic_NoiseDist2DMF[MAX_SPADIC]; 00072 TH1 *fSpadic_PedelPosMF[MAX_SPADIC]; 00073 TH2 *fSpadic_PedelPos2DMF[MAX_SPADIC]; 00074 00075 TH2 *fSpadic_pi_shape2D[MAX_SPADIC]; 00076 TH1 *fSpadic_pi_shape[MAX_SPADIC]; 00077 TH1 *fSpadic_pi_shapeRatio[MAX_SPADIC*MAX_SPADIC]; 00078 TH1 *fSpadic_pi_shapecnt[MAX_SPADIC]; 00079 TH2 *fSpadic_el_shape2D[MAX_SPADIC]; 00080 TH1 *fSpadic_el_shape[MAX_SPADIC]; 00081 TH1 *fSpadic_el_shapeRatio[MAX_SPADIC*MAX_SPADIC]; 00082 TH1 *fSpadic_el_shapecnt[MAX_SPADIC]; 00083 00084 TH1 *fSpadic_pid[MAX_SPADIC]; 00085 TH1 *fSpadic_pidMixing; 00086 TH1 *fSpadic_intens[MAX_SPADIC]; 00087 TH1 *fSpadic_intens_3pad[MAX_SPADIC]; 00088 TH1 *fSpadic_pi_intens[MAX_SPADIC]; 00089 TH1 *fSpadic_pi_intens_over[MAX_SPADIC]; 00090 TH1 *fSpadic_pi_intens_under[MAX_SPADIC]; 00091 TH1 *fSpadic_el_intens[MAX_SPADIC]; 00092 TH1 *fSpadic_el_intens_over[MAX_SPADIC]; 00093 TH1 *fSpadic_el_intens_under[MAX_SPADIC]; 00094 00095 TH1 *fSpadic_intens_el_00; 00096 TH1 *fSpadic_intens_el_01; 00097 TH1 *fSpadic_intens_el_10; 00098 TH1 *fSpadic_intens_el_11; 00099 00100 TH1 *fSpadic_intens_el_left; 00101 TH1 *fSpadic_intens_el_right; 00102 00103 TH1 *fSpadic_padMax[MAX_SPADIC]; 00104 TH1 *fSpadic_recoPos[MAX_SPADIC]; 00105 TH2 *fSpadic_beamProfil[4]; 00106 TH1 *fSpadic_statistics[MAX_SPADIC]; 00107 //TH1 *fSpadic_el_statistics[MAX_SPADIC]; //! cut quality 00108 //TH1 *fSpadic_pi_statistics[MAX_SPADIC]; //! cut quality 00109 //TH1 *fSpadic_beamQuality[MAX_SPADIC]; //! beam and chamber quality 00110 TH2 *fSpadic_correlation[MAX_SPADIC*MAX_SPADIC]; 00111 TH2 *fSpadic_alignment[MAX_SPADIC*MAX_SPADIC]; 00112 TH2 *fFiberHod1_2_x_alignment; 00113 TH2 *fFiberHod1_2_y_alignment; 00114 TH2 *fFiberHod1_2_dx_vs_x_alignment; 00115 TH2 *fFiberHod1_2_dy_vs_y_alignment; 00116 TH2 *fFiberHod1_x_alignment[MAX_SPADIC]; 00117 TH2 *fFiberHod1_y_alignment[MAX_SPADIC]; 00118 TH2 *fFiberHod2_x_alignment[MAX_SPADIC]; 00119 TH2 *fFiberHod2_y_alignment[MAX_SPADIC]; 00120 TH1 *fSpadic_efficiency; 00121 TH2 *fSpadic_2Dcorr[MAX_SPADIC]; 00122 TH1 *fSpadic_trace_noisecorr[MAX_SPADIC][NUM_SPADIC_CHA]; 00123 TH1 *fSpadic_NbCluster[MAX_SPADIC]; 00124 TH1 *fSpadic_Clustersize[MAX_SPADIC]; 00125 TH1 *fSpadic_Spectral[MAX_SPADIC]; 00126 00127 TH2 *fSpadic_PRFMF[MAX_SPADIC]; 00128 TH2 *fSpadic_deltaPos[4]; 00129 TH2 *fSpadic_MSxyHitPadplane[2]; 00130 TH2 *fSpadic_MSxyHitplane[2]; 00131 TH2 *fSpadic_FingerCorr[MAX_SPADIC]; 00132 00133 00134 TH1 *fSpadic_maxAmplitude[MAX_SPADIC]; 00135 TH1 *fSpadic_el_maxAmplitude[MAX_SPADIC]; 00136 TH1 *fSpadic_pi_maxAmplitude[MAX_SPADIC]; 00137 TH1 *fSpadic_hitTime[MAX_SPADIC]; 00138 TH1 *fSpadic_el_hitTime[MAX_SPADIC]; 00139 TH1 *fSpadic_pi_hitTime[MAX_SPADIC]; 00140 TH2 *fSpadic_hitTime_maxAmplitude[MAX_SPADIC]; 00141 TH2 *fSpadic_hitTime_position[MAX_SPADIC]; 00142 TH2 *fSpadic_hitTime_Hodo1Yposition[MAX_SPADIC]; 00143 TH2 *fSpadic_hitTime_Hodo2Yposition[MAX_SPADIC]; 00144 TH2 *fSpadic_hitTime_Hodo1Xposition[MAX_SPADIC]; 00145 TH2 *fSpadic_hitTime_Hodo2Xposition[MAX_SPADIC]; 00146 TH2 *fSpadic_overflow_Hodo1position[MAX_SPADIC]; 00147 TH2 *fSpadic_overflow_Hodo2position[MAX_SPADIC]; 00148 TGo4WinCond *fSpadic_minAmplitudeCond[MAX_SPADIC]; 00149 TGo4WinCond *fSpadic_minIntensCond[MAX_SPADIC]; 00150 TGo4WinCond *fSpadic_hitTimeCond[MAX_SPADIC]; 00151 TGo4WinCond *fSpadic_integWindow[MAX_SPADIC]; 00152 TGo4WinCond *fSpadic_padMaxWindow[MAX_SPADIC]; 00153 TGo4WinCond *fSpadic_corrMatrixWindow[MAX_SPADIC][NUM_SPADIC_CHA]; 00154 //TGo4WinCond *fSpadic 00155 00156 00157 /* JAM: here some demo how to do with spadic v10 data:*/ 00158 TH1 *fSpadicV10_input[MAX_SPADICV10][MAX_SPADICV10CHANNELS]; 00159 00160 00161 TTRDMuensterFrankfurtParam * fPar; 00162 00163 /* here some mapped slow control values:*/ 00164 Double_t fEpicsMSTRD_Anode_U[MSTRDNUM]; 00165 Double_t fEpicsMSTRD_Anode_I[MSTRDNUM]; 00166 Double_t fEpicsMSTRD_Drift_U[MSTRDNUM]; 00167 Double_t fEpicsMSTRD_Drift_I[MSTRDNUM]; 00168 Double_t fEpicsMSTRD_Sus_U[MSTRDNUM]; 00169 Double_t fEpicsMSTRD_Sus_I[MSTRDNUM]; 00170 Double_t fEpicsMSTRD_Spa_U[MSTRDNUM]; 00171 Double_t fEpicsMSTRD_Spa_I[MSTRDNUM]; 00172 Double_t fEpicsMSTRD_Temp[MPOD01SLOT]; 00173 Double_t fEpicsMSMpod00_U[MPOD00SLOT][MPOD00CHA]; 00174 Double_t fEpicsMSMpod00_I[MPOD00SLOT][MPOD00CHA]; 00175 Double_t fEpicsMSMpod01_U[MPOD01SLOT][MPOD01CHA]; 00176 Double_t fEpicsMSMpod01_I[MPOD01SLOT][MPOD01CHA]; 00177 00178 Double_t fEpicsTrdGasFlow; 00179 Double_t fEpicsTrdIntegGasFlow; 00180 00181 TH1 *fEpicsMSTRD_AnodeU[MSTRDNUM]; 00182 TH1 *fEpicsMSTRD_AnodeI[MSTRDNUM]; 00183 TH1 *fEpicsMSTRD_DriftU[MSTRDNUM]; 00184 TH1 *fEpicsMSTRD_DriftI[MSTRDNUM]; 00185 TH1 *fEpicsMSTRD_SusU[MSTRDNUM]; 00186 TH1 *fEpicsMSTRD_SusI[MSTRDNUM]; 00187 TH1 *fEpicsMSTRD_SpaU[MSTRDNUM]; 00188 TH1 *fEpicsMSTRD_SpaI[MSTRDNUM]; 00189 TH1 *fEpicsMSTRD_T[MPOD01SLOT]; 00190 TH1 *fEpicsMSMpod00_Monitor_U[MPOD01SLOT][MPOD01CHA]; 00191 TH1 *fEpicsMSMpod00_Monitor_I[MPOD01SLOT][MPOD01CHA]; 00192 TH1 *fEpicsMSMpod01_Monitor_U[MPOD01SLOT][MPOD01CHA]; 00193 TH1 *fEpicsMSMpod01_Monitor_I[MPOD01SLOT][MPOD01CHA]; 00194 00195 Double_t fEpics_Monitor_U[10]; 00196 Double_t fEpics_Monitor_I[10]; 00197 TH1 *fEpics_MonitorU[10]; 00198 TH1 *fEpics_MonitorI[10]; 00199 00200 TH1 *fEpics_TrdGasFlowMonitor; 00201 TH1 *fEpics_TrdIntegGasFlowMonitor; 00202 00203 Double_t fEpics_Rich_U[RICHNUM]; 00204 Double_t fEpics_Rich_I[RICHNUM]; 00205 TH1 *fEpics_RichU[RICHNUM]; 00206 TH1 *fEpics_RichI[RICHNUM]; 00207 00208 TLatex *S2N[MAX_SPADIC]; 00209 TLatex *E2P[MAX_SPADIC]; 00210 00211 TLine *one; 00212 00213 protected: 00214 00215 ClassDef(TTRDMuensterFrankfurtProc,1) 00216 }; 00217 00218 #endif //TUNPACKPROCESSOR_H 00219