#include <iostream.h>
#include "TFndSilMon.h"
#include "TDirectory.h"
#include "TFndHSil.h"
#include "TObjArray.h"
ClassImp(TFndSilMon);
TFndSilMon::TFndSilMon(const char *fmode) {
const char *fhist = "_sil.root";
const char *fonl = "onl";
shmflg = 0;
if(!strcmp(fmode,fonl)) shmflg = 1;
//cout << "Online flag is " << onlflg << endl;
Int_t ilen = strlen(fmode)+strlen(fhist);
Char_t *fsilnam = new Char_t[ilen];
strcpy(fsilnam,fmode);
fsilnam = strcat(fsilnam,fhist);
fsil = new TFile(fsilnam,"RECREATE","Sil Histogram File");
//fsil = 0;
if(shmflg) {
const char *mfnsil = "sil.map";
//TMapFile::SetMapAddress(0x4240f000);
msil = TMapFile::Create(mfnsil,"RECREATE",2000000,"Sil memory mapped file with histograms");
msil->Print();
}
ismmult = new TH1F("ismmult","Ism multiplicity",500,-0.5,499.5);
osmmult = new TH1F("osmmult","Osm multiplicity",500,-0.5,499.5);
ismmap = new TH2F("ism_map","ISM pattern (Module vs Strip)",1024,0.5,1024.5,24,0.5,24.5);
osmmap = new TH2F("osm_map","OSM pattern (Module vs Strip)",1024,0.5,1024.5,30,0.5,30.5);
// Define Histogram Parameters
char hname[20];
char htitle[80];
// ISM ADC
if(shmflg) {
const char *mfnism = "sil_ism.map";
//TMapFile::SetMapAddress(0x425f8000);
ism_adc = TMapFile::Create(mfnism,"RECREATE",2000000,"Ism memory mapped file");
ism_adc->Print();
}
for (Int_t i=0;i<n_ism_hybr;i++) {
sprintf(hname,"ism_hybrid_%d",i+1);
sprintf(htitle,"ISM ADC Pattern for hybrid: %d",i+1);
ism_adc_pattern[i] = new TH1F(hname,htitle,n_sil_chan,0.5,0.5+n_sil_chan);
ism_adc_pattern[i]->SetFillColor(4);
}
// OSM ADC
if(shmflg) {
const char *mfnosm = "sil_osm.map";
//TMapFile::SetMapAddress(0x425f8000);
osm_adc = TMapFile::Create(mfnosm,"RECREATE",2000000,"Osm memory mapped file");
osm_adc->Print();
}
for (Int_t l=0;l<n_osm_hybr;l++) {
sprintf(hname,"osm_hybrid_%d",l+1);
sprintf(htitle,"OSM ADC Pattern for hybrid: %d",l+1);
osm_adc_pattern[l] = new TH1F(hname,htitle,n_sil_chan,0.5,0.5+n_sil_chan);
osm_adc_pattern[l]->SetFillColor(6);
}
}
TFndSilMon::~TFndSilMon() {
if(fsil) fsil->Close();
delete fsil;
msil->Close();
delete msil;
ism_adc->Close();
delete ism_adc;
osm_adc->Close();
delete osm_adc;
}
void TFndSilMon::Fill(TFndHdt *fndhdt) {
Int_t nhsil = fndhdt->GetNHSil();
TObjArray *fHSil = fndhdt->GetSil();
Int_t nhism = 0;
Int_t nhosm = 0;
for (Int_t i=0;i<n_ism_hybr;i++) ism_adc_pattern[i]->Reset();
for (Int_t l=0;l<n_osm_hybr;l++) osm_adc_pattern[l]->Reset();
for (Int_t j=0; j<nhsil; j++) {
TFndHSil *hsil = (TFndHSil*) fHSil->At(j);
Int_t module = hsil->GetModule();
Int_t section = hsil->GetSection();
Int_t strip = hsil->GetStrip();
Int_t adc = hsil->GetAdc();
Int_t index = (module-1)*3+section;
if(module > 0 && module <= 8) {
nhism++;
ism_adc_pattern[index]->Fill((Float_t) strip, (Float_t) adc);
ismmap->Fill((Float_t) strip, (Float_t) index);
} else if(module >= 9 && module <= 18) {
nhosm++;
osm_adc_pattern[index-24]->Fill((Float_t) strip, (Float_t) adc);
osmmap->Fill((Float_t) strip, (Float_t) index);
} else {
cout << "Wrong module number: " << module << endl;
}
}
ismmult->Fill((Float_t) nhism);
osmmult->Fill((Float_t) nhosm);
}
void TFndSilMon::Update() {
if(shmflg) {
msil->Update();
ism_adc->Update();
osm_adc->Update();
}
}
void TFndSilMon::WriteToFile() {
fsil->cd();
ismmult->Write();
ismmap->Write();
osmmult->Write();
osmmap->Write();
}
void TFndSilMon::Streamer(TBuffer &R__b) {}
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.