Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "TXXXAnalysis.h"
00015
00016 #include <stdlib.h>
00017
00018 #include "TGo4Version.h"
00019 #include "TGo4Log.h"
00020 #include "Go4EventServer.h"
00021 #include "TGo4StepFactory.h"
00022 #include "TGo4AnalysisStep.h"
00023
00024 #include "TXXXControl.h"
00025
00026
00027 TXXXAnalysis::TXXXAnalysis() :
00028 fMbsEvent(0),
00029 fCtl(0),
00030 fEvents(0),
00031 fLastEvent(0)
00032 {
00033 }
00034
00035
00036
00037 TXXXAnalysis::TXXXAnalysis(int argc, char** argv) :
00038 TGo4Analysis(argc, argv),
00039 fMbsEvent(0),
00040 fCtl(0),
00041 fEvents(0),
00042 fLastEvent(0)
00043 {
00044 if (!TGo4Version::CheckVersion(__GO4BUILDVERSION__)) {
00045 TGo4Log::Error("Go4 version mismatch");
00046 exit(-1);
00047 }
00048
00049 TGo4Log::Info("Create TXXXAnalysis name: %s", argv[0]);
00050
00051 TGo4StepFactory* factory = new TGo4StepFactory("Factory");
00052 factory->DefEventProcessor("XXXProc","TXXXProc");
00053 factory->DefOutputEvent("XXXEvent","TXXXEvent");
00054
00055 Text_t lmdfile[512];
00056 sprintf(lmdfile,"%s/data/test.lmd",getenv("GO4SYS"));
00057
00058 TGo4EventSourceParameter* sourcepar = new TGo4MbsFileParameter(lmdfile);
00059
00060 TGo4FileStoreParameter* storepar = new TGo4FileStoreParameter(Form("%sOutput", argv[0]));
00061 storepar->SetOverwriteMode(kTRUE);
00062
00063 TGo4AnalysisStep* step = new TGo4AnalysisStep("Analysis", factory, sourcepar, storepar);
00064
00065 step->SetSourceEnabled(kTRUE);
00066 step->SetStoreEnabled(kFALSE);
00067 step->SetProcessEnabled(kTRUE);
00068 step->SetErrorStopEnabled(kTRUE);
00069
00070
00071
00072 AddAnalysisStep(step);
00073
00074
00075
00076
00078
00079
00080
00081 fCtl = new TXXXControl("Control");
00082 AddParameter(fCtl);
00083 }
00084
00085
00086 TXXXAnalysis::~TXXXAnalysis()
00087 {
00088 TGo4Log::Info("TXXXAnalysis: Delete instance");
00089 }
00090
00091
00092 Int_t TXXXAnalysis::UserPreLoop()
00093 {
00094
00095 TGo4Log::Info("TXXXAnalysis: PreLoop");
00096
00097 fMbsEvent = dynamic_cast<TGo4MbsEvent*> (GetInputEvent("Analysis"));
00098 if(fMbsEvent) fMbsEvent->PrintMbsFileHeader();
00099
00100
00101 fEvents=0;
00102 fLastEvent=0;
00103 return 0;
00104 }
00105
00106 Int_t TXXXAnalysis::UserPostLoop()
00107 {
00108
00109 TGo4Log::Info("TXXXAnalysis: PostLoop");
00110 TGo4Log::Info("Last event #: %d Total events: %d", fLastEvent, fEvents);
00111 fMbsEvent = 0;
00112 fEvents = 0;
00113 return 0;
00114 }
00115
00116
00117 Int_t TXXXAnalysis::UserEventFunc()
00118 {
00119
00120
00121 if(fMbsEvent) {
00122 fEvents++;
00123 fLastEvent = fMbsEvent->GetCount();
00124 }
00125 if((fEvents == 1) || IsNewInputFile()) {
00126 TGo4Log::Info("First event #: %d", fLastEvent);
00127 }
00128 return 0;
00129 }