#include "PndTpcPSAplot.h" #include #include "TAxis.h" #include "TGraph.h" PndTpcPSAplot::PndTpcPSAplot(std::vector* samples, std::vector* alldigis, std::vector* signals, const PndTpcFrontend* const ffrontend = NULL, std::string name="") : fname(name) { std::vector* digis = new std::vector; int currentPadId = samples->at(0)->padId(); for (unsigned int i=0;isize();++i) { if(alldigis->at(i)->padId() == currentPadId) { digis->push_back(alldigis->at(i)); } } 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]; double xDigiG[ndigi]; double yDigiG[ndigi]; fnDigiLines = ndigi; fnSigLines = nsig; fdigiLines = new TLine*[ndigi]; if(signals != NULL) { fsigLines = new TLine*[nsig]; } else { fsigLines = 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(); } } fsampG = new TGraph(nsamp,xSampG,ySampG); for(int iDigiG=0; iDigiGt(); yDigiG[iDigiG] = (*digis)[iDigiG]->amp() / 10; fdigiLines[iDigiG] = new TLine((*digis)[iDigiG]->t(),0.,(*digis)[iDigiG]->t(),fsampG->GetYaxis()->GetXmax()); } if(signals != NULL) { for(int iSig=0;iSigamp() > maxAmpSig) { maxAmpSig = (*signals)[iSig]->amp(); } } for(int iSig=0;iSigClockFine( ((*signals)[iSig])->t()) , 0., ffrontend->ClockFine( ((*signals)[iSig])->t()) , ((*signals)[iSig])->amp() * maxAmpSamp/maxAmpSig); } } // fsampG = new TGraph(nsamp,xSampG,ySampG); fdigiG = new TGraph(ndigi,xDigiG,yDigiG); // char buf[20]; } PndTpcPSAplot::~PndTpcPSAplot(){ delete fsampG; delete fdigiG; for(int i=0;iSetName(buf); fsampG->SetMarkerStyle(20); fsampG->SetMarkerSize(.5); fsampG->SetMarkerColor(kBlue); fsampG->SetFillColor(kBlue); fdigiG->SetMarkerStyle(21); fdigiG->SetMarkerSize(.75); fdigiG->SetMarkerColor(kRed); fsampG->SetTitle(fname.c_str()); fsampG->GetXaxis()->SetTitle("time [100ns]"); fsampG->GetYaxis()->SetTitle("arb. units"); /* fsampG->GetYaxis()->SetTitleOffset(1.3); fsampG->GetXaxis()->SetTitleFont(102); fsampG->GetXaxis()->SetLabelFont(102); fsampG->GetYaxis()->SetTitleFont(102); fsampG->GetYaxis()->SetLabelFont(102); */ fsampG->Draw("AB"); fdigiG->Draw("P"); if(fsigLines != NULL) { for(int iLines=0;iLinesSetLineColor(kGreen); fsigLines[iLines]->SetLineWidth(3); fsigLines[iLines]->Draw("same"); } } for(int iLines=0;iLinesSetLineColor(kRed); fdigiLines[iLines]->Draw("same"); } gApplication->SetReturnFromRun(kTRUE); gSystem->Run(); delete c1; }