/* * TrkDedxVsRigHistoAction.cpp * * Created on: 9-giu-2009 * Author: Nicola Mori */ /*! @file TrkDedxVsRigHistoAction.cpp The TrkDedxVsRigHistoAction class implementation file. */ #include "TrkDedxVsRigHistoAction.h" TrkDedxVsRigHistoAction::TrkDedxVsRigHistoAction(const char *actionName, TString outFileName, TString mode, bool logBinningR, float minDedx, float maxDedx, unsigned int nBinsDedx, float minR, float maxR, unsigned int nBinsR) : CollectionAction(actionName), _outFileName(outFileName), _histo(), _mode(mode) { _histo.SetName(GetName()); _histo.SetTitle("TRK dE/dx Vs Rigidity"); _histo.GetXaxis()->SetTitle("R (GV)"); _histo.GetYaxis()->SetTitle("dE/dx (MIP)"); if (!logBinningR || minR <= 0.) _histo.SetBins(nBinsR, minR, maxR, nBinsDedx, minDedx, maxDedx); else { double rigBins[nBinsR + 1]; double maxExp = log10(maxR/minR); for (unsigned int i = 0; i < nBinsR + 1; i++) { rigBins[i] = minR * pow(10., (double)i / ((double)nBinsR) * maxExp); } double dedxBins[nBinsDedx + 1]; double dedxStep = (maxDedx - minDedx) / (double) nBinsDedx; for (unsigned int i = 0; i < nBinsDedx + 1; i++) { dedxBins[i] = minDedx + i * dedxStep; } _histo.SetBins(nBinsR, rigBins, nBinsDedx, dedxBins); } } void TrkDedxVsRigHistoAction::OnGood(PamLevel2 *event) { _histo.Fill(1 / event->GetTrack(0)->GetTrkTrack()->GetDeflection(), event->GetTrack(0)->GetTrkTrack()->GetDEDX()); } void TrkDedxVsRigHistoAction::Finalize() { TFile outFile(_outFileName, _mode); outFile.cd(); _histo.Write(); outFile.Close(); }