///////////////////////////////////////////////////////////////////////
//
// Summarises the event data into the SOC format and places it into the
// run tree.
//
// Author: Phil Jones
// Author: Rob Stainforth -- contact person
//
// REVISION HISTORY:
// 02/10/2012 : P. Jones - First Revision, new file.
// 2014-01-17 : G. Prior - added Source pos. from manipulator and Laser wavelength.
// - suppressed calculation of integral of PMT hits (moved in SOCPeakProc).
// 2014-05-25 : P. Jones - Refactored in line with dsreview.
/// 2017-11-14 : A. Inacio - Updated the code to work with non-integer laserball
/// orientations, which is the case of external LB runs.
//
///////////////////////////////////////////////////////////////////////
#ifndef __RAT_SOCDataProc__
#define __RAT_SOCDataProc__
#include
#include
#include
#include
namespace RAT
{
class SOCDataProc : public Processor
{
public:
// Constructor, initialize cut variable
SOCDataProc();
// empty virtual destructor
virtual ~SOCDataProc() {};
// Applies set integer commands
virtual void SetI( const std::string& param, const int value );
// New run must wipe old data ready for new data
virtual void BeginOfRun( DS::Run& run );
// Called per event
virtual Processor::Result DSEvent( DS::Run& run,DS::Entry& ds );
// Called at the end of the run, fills the run tree with the SOC data
virtual void EndOfRun( DS::Run& run );
// Loads manip info from ratdb (data only)
void LoadCalibCommon(std::string fCalInfo);
// Loads N2 laser info from ratdb (data only)
void LoadN2DyeLaser();
// Loads smellie run info from ratdb (data only)
void LoadSMELLIERun( DS::Run& run );
// Loads tellie run info from ratdb (data only)
void LoadTELLIERun( DS::Run& run );
protected:
std::map fSummaryData; // Data indexed by source id
std::vector fSubrunFibreIDsVector; ///< vector of fibre IDs used, with one entry for each subrun
std::vector fSubRunNumbers; ///< Vector containing the subrun numbers
// flag to allow some initialization within DSEvent
bool firstEvent;
// string to distiguish bewtween LB, T/SM/AMELLIE, and subrun (SMELLIE)
std::string fSourceID;
std::string fSourceType;
//
bool is_this_mc;
bool isSource;
bool isTELLIE;
bool isSMELLIE;
bool isAMELLIE;
TVector3 fPosition;
TVector3 fOrientationVector;
int fOrientationCode;
float fWavelengthAvg;
DU::PMTCalStatus fPMTStatus;
int iSkipPMTCuts;
int iSkipOutOfSyncPMTCuts;
};
} // ::RAT
#endif