00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <stdio.h>
00012 #include <stdlib.h>
00013 #include <string>
00014 #include <map>
00015 #include <utility>
00016 #include <sstream>
00017
00018
00019 #include "midas.h"
00020
00021
00022 #include <TH2.h>
00023
00024
00025 #include "TOctalFADCIsland.h"
00026 #include "TOctalFADCBankReader.h"
00027 #include "TGlobalData.h"
00028 #include "TSetupData.h"
00029 #include "TPulseIsland.h"
00030
00031 using std::string;
00032 using std::map;
00033 using std::vector;
00034 using std::pair;
00035
00036
00037 INT MNumberIslands_init(void);
00038 INT MNumberIslands(EVENT_HEADER*, void*);
00039 double GetClockTickForChannel(string bank_name);
00040
00041 extern HNDLE hDB;
00042 extern TGlobalData* gData;
00043 extern TSetupData* gSetup;
00044
00045 static vector<TOctalFADCBankReader*> fadc_bank_readers;
00046 static TH2I* hNumberOfIslands;
00047
00048 ANA_MODULE MNumberIslands_module =
00049 {
00050 "MNumberIslands",
00051 "Andrew Edmonds",
00052 MNumberIslands,
00053 NULL,
00054 NULL,
00055 MNumberIslands_init,
00056 NULL,
00057 NULL,
00058 0,
00059 NULL,
00060 };
00061
00064 INT MNumberIslands_init()
00065 {
00066
00067
00068
00069
00070 hNumberOfIslands = new TH2I("hNumberOfIslands", "Number of Islands per Channel per Event", 1,0,1, 10000,0,10000);
00071 hNumberOfIslands->GetXaxis()->SetTitle("Bank Name");
00072 hNumberOfIslands->GetYaxis()->SetTitle("MIDAS Event Number");
00073 hNumberOfIslands->SetBit(TH1::kCanRebin);
00074
00075 return SUCCESS;
00076 }
00077
00081 INT MNumberIslands(EVENT_HEADER *pheader, void *pevent)
00082 {
00083
00084 int midas_event_number = pheader->serial_number;
00085
00086
00087 typedef map<string, vector<TPulseIsland*> > TStringPulseIslandMap;
00088 typedef pair<string, vector<TPulseIsland*> > TStringPulseIslandPair;
00089 typedef map<string, vector<TPulseIsland*> >::iterator map_iterator;
00090
00091
00092
00093 TStringPulseIslandMap& pulse_islands_map =
00094 gData->fPulseIslandToChannelMap;
00095
00096
00097 for (map_iterator theMapIter = pulse_islands_map.begin(); theMapIter != pulse_islands_map.end(); theMapIter++)
00098 {
00099 std::string bankname = theMapIter->first;
00100 std::vector<TPulseIsland*> thePulses = theMapIter->second;
00101
00102 hNumberOfIslands->Fill(bankname.c_str(), midas_event_number, thePulses.size());
00103
00104 }
00105 return SUCCESS;
00106 }