Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "TXXXAnlProc.h"
00015
00016 #include <math.h>
00017
00018 #include "TH1.h"
00019 #include "TH2.h"
00020 #include "TROOT.h"
00021
00022 #include "TGo4WinCond.h"
00023 #include "TGo4Analysis.h"
00024
00025 #include "TXXXAnlEvent.h"
00026 #include "TXXXUnpackEvent.h"
00027 #include "TXXXParameter.h"
00028
00029
00030 TXXXAnlProc::TXXXAnlProc() :
00031 TGo4EventProcessor(),
00032 fSum1(0), fSum2(0), fSum3(0),
00033 fParam(0), fWinCon(0)
00034 {
00035 }
00036
00037
00038 TXXXAnlProc::TXXXAnlProc(const char* name) :
00039 TGo4EventProcessor(name),
00040 fSum1(0), fSum2(0), fSum3(0),
00041 fParam(0), fWinCon(0)
00042 {
00043 TGo4Log::Info("TXXXAnlProc: Create");
00045
00046
00047
00048 fParam = (TXXXParameter*) MakeParameter("XXXParameter", "TXXXParameter");
00049
00050
00051 fWinCon = (TGo4WinCond *) GetAnalysisCondition("wincon1", "TGo4WinCond");
00052 if (fWinCon) fWinCon->PrintCondition(true);
00053
00054 if(fParam->fbHisto) {
00055 fSum1 = MakeTH1('I', "Sum1", "Sum over 8 channels", 5000, 1., 5001.);
00056 fSum2 = MakeTH1('I', "Sum2", "Sum over 8 channels shift 1", 5000, 1., 5001.);
00057 fSum3 = MakeTH1('I', "Sum3", "Sum over 8 channels shift 2", 5000, 1., 5001.);
00058 }
00059 }
00060
00061 TXXXAnlProc::~TXXXAnlProc()
00062 {
00063 TGo4Log::Info("TXXXAnlProc: Delete");
00064 if(fParam->fbHisto){
00065 if (fWinCon) fWinCon->PrintCondition(true);
00066 }
00067 }
00068
00069 Bool_t TXXXAnlProc::BuildEvent(TGo4EventElement* dest)
00070 {
00071 Bool_t isValid=kFALSE;
00072
00073 TXXXUnpackEvent* inp_evt = (TXXXUnpackEvent*) GetInputEvent();
00074 TXXXAnlEvent* out_evt = (TXXXAnlEvent*) dest;
00075
00076
00077 if((inp_evt==0) || !inp_evt->IsValid()){
00078 out_evt->SetValid(isValid);
00079 return isValid;
00080 }
00081 isValid=kTRUE;
00082
00083 Int_t cnt(0);
00084 for(Int_t ii=0;ii<XXX_NUM_CHAN/2;ii++)
00085 out_evt->frData[cnt++] = inp_evt->fiCrate1[ii];
00086
00087 for(Int_t ii=0; ii<XXX_NUM_CHAN/2; ii++)
00088 out_evt->frData[cnt++] = inp_evt->fiCrate2[ii];
00089
00090 if(fParam->fbHisto) {
00091 for(Int_t ii=0;ii<XXX_NUM_CHAN;ii++)
00092 if(out_evt->frData[ii]) {
00093 if(fWinCon && fWinCon->Test(out_evt->frData[ii])) fSum1->Fill(out_evt->frData[ii]);
00094 fSum2->Fill(out_evt->frData[ii] + fParam->frP1);
00095 fSum3->Fill(out_evt->frData[ii] + fParam->frP2);
00096 }
00097 }
00098
00099
00100 out_evt->SetValid(isValid);
00101 return isValid;
00102 }