#include "TpcPSAplot.h" TpcPSAplot::TpcPSAplot(TGraph* sampG,TGraph* digiG, TLine** digiLines,int nDigiLines, TLine** sigLines = NULL,int nSigLines = 0){ _sampG = sampG; _digiG = digiG; _digiLines = digiLines; _nDigiLines = nDigiLines; _sigLines = sigLines; _nSigLines = nSigLines; } TpcPSAplot::TpcPSAplot(std::vector* samples, std::vector* digis, std::vector* signals, const TpcFrontend* const _frontend = NULL) { int nsamp = samples->size(); int ndigi = digis->size(); int nsig; if(signals != NULL) { nsig = signals->size(); } else { nsig = 0; } int xSampG[nsamp]; int ySampG[nsamp]; int xDigiG[ndigi]; int yDigiG[ndigi]; _nDigiLines = ndigi; _nSigLines = nsig; _digiLines = new TLine*[ndigi]; if(signals != NULL) { _sigLines = new TLine*[nsig]; } else { _sigLines = NULL; } int maxAmpSamp=0; double maxAmpSig=0.; for(int iSampG=0; iSampGt(); ySampG[iSampG] = (*samples)[iSampG]->amp(); if((*samples)[iSampG]->amp() > maxAmpSamp) { maxAmpSamp = (*samples)[iSampG]->amp(); } } for(int iDigiG=0; iDigiGt(); yDigiG[iDigiG] = (*digis)[iDigiG]->amp(); _digiLines[iDigiG] = new TLine((*digis)[iDigiG]->t(),0.,(*digis)[iDigiG]->t(),(*digis)[iDigiG]->amp()); } if(signals != NULL) { for(int iSig=0;iSigamp() > maxAmpSig) { maxAmpSig = (*signals)[iSig]->amp(); } } for(int iSig=0;iSigClockFine( ((*signals)[iSig])->t()) , 0., _frontend->ClockFine( ((*signals)[iSig])->t()) , ((*signals)[iSig])->amp() * maxAmpSamp/maxAmpSig); } } _sampG = new TGraph(nsamp,xSampG,ySampG); _digiG = new TGraph(ndigi,xDigiG,yDigiG); // char buf[20]; } TpcPSAplot::~TpcPSAplot(){ delete _sampG; delete _digiG; for(int i=0;i<_nDigiLines;i++) { delete _digiLines[i]; } for(int i=0;i<_nSigLines;i++) { delete _sigLines[i]; } } void TpcPSAplot::Draw() { TCanvas *c1 = new TCanvas(); // sprintf(buf,"graph%i",i); // graph->SetName(buf); _sampG->SetMarkerStyle(20); _sampG->SetMarkerColor(kBlue); _digiG->SetMarkerStyle(21); _digiG->SetMarkerColor(kRed); _sampG->Draw("AP"); _digiG->Draw("P"); if(_sigLines != NULL) { for(int iLines=0;iLines<_nSigLines;iLines++) { _sigLines[iLines]->SetLineColor(kGreen); _sigLines[iLines]->SetLineWidth(3); _sigLines[iLines]->Draw("same"); } } for(int iLines=0;iLines<_nDigiLines;iLines++) { _digiLines[iLines]->SetLineColor(kRed); _digiLines[iLines]->Draw("same"); } gApplication->SetReturnFromRun(kTRUE); gSystem->Run(); delete c1; }