#include "IVAnalyzer.hxx" #include "IBeamlineParameterExtractor.hxx" #include #include #include #include #include const double COMET::IVAnalyzer::kInvalidPoint=-1e9; COMET::IVAnalyzer::IVAnalyzer(const std::string& name, bool useBeamline): fOutput(NULL),fAllHists(NULL),fName(name),fUseBeamline(useBeamline){ fAllHists=new IHistoListo; } COMET::IVAnalyzer::~IVAnalyzer(){} bool COMET::IVAnalyzer::Initialise(std::string datum_name){ fDatumName=datum_name; TDirectory* dir=TDirectory::CurrentDirectory(); if(fOutput)fOutput->cd(); TGeoManager* geometry=COMET::IOADatabase::Get().UpdateGeometry(); if(!geometry){ COMETError("No valid geometry found. Beamline coordinates won't work"); if(fUseBeamline) return false; }else { // Setup the beamline coordinate system from the geometry COMET::IBeamlineParameterExtractor::Load(fBeamlineCoords,geometry); fBeamlineCoords.Initialise(); } bool ret_val=SetupHistograms(); dir->cd(); // Set up the colour pallette if it isn't already defined if(TColor::GetNumberOfColors()<2){ TColor::SetPalette(51,0); } return ret_val; } bool COMET::IVAnalyzer::Finalize(){ TDirectory* dir=TDirectory::CurrentDirectory(); if(fOutput) fOutput->cd(); bool ret_val=true; if( ! FinalizeHistograms() ){ ret_val= false; } else { fAllHists->Write(); COMETLog("Wrote "<size()<<" plots for "<cd(); return ret_val; } double COMET::IVAnalyzer::ConvertGlobalToBeamlineAxis(const TVector3& globalPos)const{ COMET::IBeamlinePoint beamPos=fBeamlineCoords.ToBeamlineCoords(globalPos); if(beamPos.IsValid())return beamPos.Longitudinal(); return kInvalidPoint; }