/* This file is part of MAUS: http://micewww.pp.rl.ac.uk:8080/projects/maus * * MAUS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MAUS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MAUS. If not, see . * */ // std includes #include // ROOT headers #include "TAxis.h" // MAUS headers #include "src/common_cpp/Plotting/SciFi/TrackerDataPlotterSZ.hh" namespace MAUS { TrackerDataPlotterSZ::TrackerDataPlotterSZ() : TrackerDataPlotterBase(), _gr_sz1(NULL), _gr_sz2(NULL) { // Do nothing } TrackerDataPlotterSZ::~TrackerDataPlotterSZ() { if ( _gr_sz1 ) delete _gr_sz1; if ( _gr_sz2 ) delete _gr_sz2; } TCanvas* TrackerDataPlotterSZ::operator() ( TrackerData &t1, TrackerData &t2, TCanvas* aCanvas) { // If canvas is passed in use it, otherwise use the member canvas TCanvas* lCanvas(NULL); if ( aCanvas ) { // TODO check number of pads = 6 lCanvas = aCanvas; } else { if (_Canvas) { _Canvas->Clear(); } else { _Canvas = new TCanvas("sz", "Track S-Z Projection", 200, 10, 700, 500); } _Canvas->Divide(2); lCanvas = _Canvas; } // Combine the data from all tracks into a single set of 1D vectors std::vector t1_z; std::vector t1_s; std::vector t2_z; std::vector t2_s; for (size_t i = 0; i < t1._seeds_z.size(); ++i) { t1_z.insert(t1_z.end(), t1._seeds_z[i].begin(), t1._seeds_z[i].end()); } for (size_t i = 0; i < t1._seeds_s.size(); ++i) { t1_s.insert(t1_s.end(), t1._seeds_s[i].begin(), t1._seeds_s[i].end()); } for (size_t i = 0; i < t2._seeds_z.size(); ++i) { t2_z.insert(t2_z.end(), t2._seeds_z[i].begin(), t2._seeds_z[i].end()); } for (size_t i = 0; i < t2._seeds_s.size(); ++i) { t2_s.insert(t2_s.end(), t2._seeds_s[i].begin(), t2._seeds_s[i].end()); } // Draw the seed spacepoints lCanvas->cd(1); if ( _gr_sz1 ) delete _gr_sz1; _gr_sz1 = new TGraph(t1_z.size(), &(t1_z[0]), &(t1_s[0])); _gr_sz1->SetTitle("Tracker 1 S-Z Projection"); _gr_sz1->GetXaxis()->SetTitle("z(mm)"); _gr_sz1->GetYaxis()->SetTitle("s(mm)"); _gr_sz1->SetMarkerStyle(20); _gr_sz1->SetMarkerColor(kBlack); _gr_sz1->Draw("AP same"); lCanvas->Update(); lCanvas->cd(2); if ( _gr_sz2 ) delete _gr_sz2; _gr_sz2 = new TGraph(t2_z.size(), &(t2_z[0]), &(t2_s[0])); _gr_sz2->SetTitle("Tracker 2 S-Z Projection"); _gr_sz2->GetXaxis()->SetTitle("z(mm)"); _gr_sz2->GetYaxis()->SetTitle("s(mm)"); _gr_sz2->SetMarkerStyle(20); _gr_sz2->SetMarkerColor(kBlack); _gr_sz2->Draw("AP same"); lCanvas->Update(); // Draw the fits for (size_t i = 0; i < t1._trks_sz.size(); ++i) { lCanvas->cd(1); t1._trks_sz[i].Draw("same"); lCanvas->Update(); } for (size_t i = 0; i < t2._trks_sz.size(); ++i) { lCanvas->cd(2); t2._trks_sz[i].Draw("same"); lCanvas->Update(); } return lCanvas; } // ~operator() } // ~namespace MAUS