00001 #include "MyModule.h"
00002 #include <iostream>
00003 #include <stdio.h>
00004 #include <stdlib.h>
00005 #include <string>
00006 #include <map>
00007 #include <utility>
00008 #include "definitions.h"
00009 #include "TH2.h"
00010
00011 using std::string;
00012 using std::map;
00013 using std::vector;
00014 using std::pair;
00015
00016 const int NCHAN = 8;
00017
00018 static TH1 *hSamples1 = 0;
00019 static TH1 *hSamples2 = 0;
00020 static TH1 *hSamples3 = 0;
00021
00022 static TH1 *bankHists[NCHAN];
00023 static vector<string> banks;
00024
00025 MyModule::MyModule(const char *HistogramDirectoryName) :
00026 BaseModule(HistogramDirectoryName){
00027
00028
00029 banks.push_back("CDG0");
00030 banks.push_back("CDG1");
00031 banks.push_back("CDG2");
00032 banks.push_back("CDG3");
00033 banks.push_back("CDG4");
00034 banks.push_back("CDG5");
00035 banks.push_back("CDG6");
00036 banks.push_back("CDG7");
00037
00038 printf(" banks size %d \n",(int)banks.size());
00039
00040 hSamples1 = new TH1F("hSamples1","",100,0,100);
00041 hSamples2 = new TH1F("hSamples2","",100,0,100);
00042 hSamples3 = new TH1F("hSamples3","",100,0,100);
00043
00044 for (int i=0; i<NCHAN; i++) bankHists[i] = new TH1F(Form("bank%d",i),"",100,0,100);
00045
00046 }
00047
00048 MyModule::~MyModule(){
00049 }
00050
00051 int MyModule::ProcessEntry(TGlobalData *gData){
00052 typedef StringPulseIslandMap::iterator map_iterator;
00053
00054
00055
00056 vector<TPulseIsland*> islands[banks.size()];
00057
00058 for(unsigned int b1 = 0; b1 < banks.size(); ++b1){
00059 string bank = banks.at(b1);
00060 for(map_iterator iter = gData->fPulseIslandToChannelMap.begin(); iter != gData->fPulseIslandToChannelMap.end(); iter++){
00061
00062 if(strcmp((iter->first).data(), bank.data()) == 0){
00063 islands[b1] = iter->second;
00064
00065 }
00066 }
00067
00068
00069 }
00070
00071 int maxTPIsize = 10;
00072
00073 vector<int> samples[banks.size()][maxTPIsize];
00074
00075 for (unsigned int b1=0; b1<banks.size(); b1++){
00076 for (unsigned int i=0; i<islands[b1].size(); i++){
00077 samples[b1][i] = islands[b1][i]->GetSamples();
00078 }
00079 }
00080
00081
00082
00083 for(unsigned int b1 = 0; b1 < banks.size(); ++b1){
00084
00085
00086
00087 for(unsigned int i = 0; i < islands[b1].size(); ++i){
00088
00089 for (unsigned int j=0; j<samples[b1][i].size(); j++){
00090 bankHists[b1]->Fill(samples[b1][i][j]);
00091 if (i==0) hSamples1->Fill(samples[b1][i][j]);
00092 if (i==1) hSamples2->Fill(samples[b1][i][j]);
00093 if (i==2) hSamples3->Fill(samples[b1][i][j]);
00094
00095 }
00096 }
00097 }
00098
00099 return 0;
00100 }