00001
00002
00004 #include <cstdio>
00005 #include <cassert>
00006 #include "PEGain/PEGainStripHisto.h"
00007 #include "MessageService/MsgService.h"
00008 #include "TFile.h"
00009
00010
00011 ClassImp(PEGainStripHisto)
00012
00013 CVSID("$Id: PEGainStripHisto.cxx,v 1.2 2003/05/21 17:10:52 bv Exp $");
00014
00015
00016
00017 PEGainStripHisto::PEGainStripHisto()
00018 :fHistNear(0),fHistFar(0),fEncodedStrip(-1),fTempNearHits(0),fTempFarHits(0),fTempFarSum(0),fTempNearSum(0)
00019 {
00020
00021 MSG("PEGain",Msg::kVerbose) << "PEGainStripHisto::PEGainStripHisto()\n";
00022
00023 }
00024
00025
00026 PEGainStripHisto::~PEGainStripHisto()
00027 {
00028 MSG("PEGain",Msg::kVerbose) << "PEGainStripHisto::~PEGainStripHisto()\n";
00029 if(fHistFar) delete fHistFar;
00030 if(fHistNear) delete fHistNear;
00031
00032 }
00033
00034 void PEGainStripHisto::AddToNearEnd(Int_t adc,
00035 const PlexStripEndId &seid,
00036 Int_t box,
00037 Int_t led,
00038 Int_t height )
00039 {
00040 MSG("PEGain",Msg::kVerbose) << "PEGainStripHisto::AddToNearEnd( "
00041 << adc << " , " << seid << " , "
00042 << box << " , " << led << " , "
00043 << height << " )\n";
00044 if(fEncodedStrip==-1) {
00045 fSeid=seid;
00046 fEncodedStrip=seid.BuildPlnStripEndKey();
00047 }
00048 else assert(seid.BuildPlnStripEndKey()==fEncodedStrip);
00049
00050 if(!fHistNear) {
00051 Char_t histname[80];
00052 sprintf(histname,"pl%d_st%d_end%d_box%d_led%d_h%d",
00053 seid.GetPlane(), seid.GetStrip(),
00054 int(seid.GetEnd()), box,led,height);
00055 sprintf(fNearHistName,"%s",histname);
00056 fHistNear = new TH1F(histname,histname,17000,-500.5,16499.5);
00057 }
00058
00059 fTempNearHits++;
00060 fTempNearSum+=adc;
00061 }
00062
00063 void PEGainStripHisto::AddToFarEnd(Int_t adc,
00064 const PlexStripEndId &seid,
00065 Int_t box,
00066 Int_t led,
00067 Int_t height)
00068 {
00069 MSG("PEGain",Msg::kVerbose) << "PEGainStripHisto::AddToFarEnd()\n";
00070 if(fEncodedStrip==-1) {
00071 fSeid=seid;
00072 fEncodedStrip=seid.BuildPlnStripEndKey();
00073 }
00074 else assert(seid.BuildPlnStripEndKey()==fEncodedStrip);
00075
00076 if(!fHistFar) {
00077 Char_t histname[80];
00078 sprintf(histname,"pl%d_st%d_end%d_box%d_led%d_h%d",
00079 seid.GetPlane(), seid.GetStrip(),
00080 int(seid.GetEnd()), box,led,height);
00081 sprintf(fFarHistName,"%s",histname);
00082
00083 fHistFar = new TH1F(histname,histname,17000,-500.5,16499.5);
00084 }
00085 fTempFarHits++;
00086 fTempFarSum+=adc;
00087
00088
00089 }
00090 void PEGainStripHisto::FillHistos() {
00091 MSG("PEGain",Msg::kVerbose)
00092 << "PEGainStripHisto::FillHistos() for histos "
00093 << fFarHistName << " & " << fNearHistName << "\n";
00094 if(fTempFarHits>0) {
00095 fHistFar->Fill(fTempFarSum);
00096 fTempFarHits=0;
00097 fTempFarSum=0;
00098 }
00099 if(fTempNearHits>0) {
00100 fHistNear->Fill(fTempNearSum);
00101 fTempNearHits=0;
00102 fTempNearSum=0;
00103 }
00104 }
00105
00106
00107 void PEGainStripHisto::WriteHistos(TFile *fp) const {
00108 fp->cd();
00109 if(fHistFar) fHistFar->Write();
00110 if(fHistNear) fHistNear->Write();
00111 }
00112