Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:13:20

0001 /// ---------------------------------------------------------------------------
0002 /*! \file   GEvtInfo.cc
0003  *  \author Derek Anderson
0004  *  \date   03.06.2024
0005  *
0006  *  Utility class to hold event-level generator
0007  *  information.
0008  */
0009 /// ---------------------------------------------------------------------------
0010 
0011 #define SCORRELATORUTILITIES_GEVTINFO_CC
0012 
0013 // class definition
0014 #include "GEvtInfo.h"
0015 
0016 // make comon namespaces implicit
0017 using namespace std;
0018 
0019 
0020 
0021 namespace SColdQcdCorrelatorAnalysis {
0022 
0023   // private methods ==========================================================
0024 
0025   // --------------------------------------------------------------------------
0026   //! Set data members to absolute minima
0027   // --------------------------------------------------------------------------
0028   void Types::GEvtInfo::Minimize() {
0029 
0030     // minimize atomic members
0031     nChrgPar = -1 * numeric_limits<int>::max();
0032     nNeuPar  = -1 * numeric_limits<int>::max();
0033     eSumChrg = -1. * numeric_limits<double>::max();
0034     eSumNeu  = -1. * numeric_limits<double>::max();
0035 
0036     // minimize parton info
0037     partons = make_pair(ParInfo(Const::Init::Minimize), ParInfo(Const::Init::Minimize));
0038     return;
0039 
0040   }  // end 'Minimize()'
0041 
0042 
0043 
0044   // --------------------------------------------------------------------------
0045   //! Set data members to absolute maxima
0046   // --------------------------------------------------------------------------
0047   void Types::GEvtInfo::Maximize() {
0048 
0049     // maximize atomic members
0050     nChrgPar = numeric_limits<int>::max();
0051     nNeuPar  = numeric_limits<int>::max();
0052     eSumChrg = numeric_limits<double>::max();
0053     eSumNeu  = numeric_limits<double>::max();
0054 
0055     // maximize parton info
0056     partons = make_pair(ParInfo(Const::Init::Maximize), ParInfo(Const::Init::Maximize));
0057     return;
0058 
0059   }  // end 'Maximize()'
0060 
0061 
0062 
0063   // public methods ===========================================================
0064 
0065   // --------------------------------------------------------------------------
0066   //! Reset object by maximizing data members
0067   // --------------------------------------------------------------------------
0068   void Types::GEvtInfo::Reset() {
0069 
0070     // reset embed flag
0071     isEmbed = false;
0072 
0073     // maximize everyting else
0074     Maximize();
0075     return;
0076 
0077   }  // end 'Reset()'
0078 
0079 
0080 
0081   // --------------------------------------------------------------------------
0082   //! Pull relevant information from a F4A node and a list of subevents
0083   // --------------------------------------------------------------------------
0084   void Types::GEvtInfo::SetInfo(
0085     PHCompositeNode* topNode,
0086     const bool embed,
0087     const vector<int> evtsToGrab
0088   ) {
0089 
0090     // set embed flag
0091     isEmbed = embed;
0092 
0093     // set parton info
0094     isEmbed  = embed;
0095     if (isEmbed) {
0096       partons.first  = Tools::GetPartonInfo(topNode, Const::SubEvt::EmbedSignal, Const::HardScatterStatus::First);
0097       partons.second = Tools::GetPartonInfo(topNode, Const::SubEvt::EmbedSignal, Const::HardScatterStatus::Second);
0098 
0099     } else {
0100       partons.first  = Tools::GetPartonInfo(topNode, Const::SubEvt::NotEmbedSignal, Const::HardScatterStatus::First);
0101       partons.second = Tools::GetPartonInfo(topNode, Const::SubEvt::NotEmbedSignal, Const::HardScatterStatus::Second);
0102     }
0103 
0104     // get sums
0105     nChrgPar = Tools::GetNumFinalStatePars(topNode, evtsToGrab, Const::Subset::Charged);
0106     nNeuPar  = Tools::GetNumFinalStatePars(topNode, evtsToGrab, Const::Subset::Neutral);
0107     eSumChrg = Tools::GetSumFinalStateParEne(topNode, evtsToGrab, Const::Subset::Charged);
0108     eSumNeu  = Tools::GetSumFinalStateParEne(topNode, evtsToGrab, Const::Subset::Neutral);
0109     return;
0110 
0111   }  // end 'SetInfo(PHCompositeNode*, vector<int>)'
0112 
0113 
0114 
0115   // static methods ===========================================================
0116 
0117   // --------------------------------------------------------------------------
0118   //! Get list of data fields
0119   // --------------------------------------------------------------------------
0120   vector<string> Types::GEvtInfo::GetListOfMembers() {
0121 
0122     // get parton members
0123     vector<string> membersParA = ParInfo::GetListOfMembers();
0124     vector<string> membersParB = ParInfo::GetListOfMembers();
0125 
0126     // add tags to parton members
0127     Interfaces::AddTagToLeaves("PartonA", membersParA);
0128     Interfaces::AddTagToLeaves("PartonB", membersParB);
0129 
0130     // construct list
0131     vector<string> members = {
0132       "nChrgPar",
0133       "nNeuPar",
0134       "isEmbed",
0135       "eSumChrg",
0136       "eSumNeu"
0137     };
0138     Interfaces::CombineLeafLists(membersParA, members);
0139     Interfaces::CombineLeafLists(membersParB, members);
0140     return members;
0141 
0142   }  // end 'GetListOfMembers()'
0143 
0144 
0145 
0146   // ctor/dtor ================================================================
0147 
0148   // --------------------------------------------------------------------------
0149   //! Default class constructor
0150   // --------------------------------------------------------------------------
0151   Types::GEvtInfo::GEvtInfo() {
0152 
0153     /* nothing to do */
0154 
0155   }  // end ctor()
0156 
0157 
0158 
0159   // --------------------------------------------------------------------------
0160   //! Default class destructor
0161   // --------------------------------------------------------------------------
0162   Types::GEvtInfo::~GEvtInfo() {
0163 
0164     /* nothing to do */
0165 
0166   }  // end dtor()
0167 
0168 
0169 
0170   // --------------------------------------------------------------------------
0171   //! Constructor accepting initialization option (minimize or maximize)
0172   // --------------------------------------------------------------------------
0173   Types::GEvtInfo::GEvtInfo(const Const::Init init) {
0174 
0175     switch (init) {
0176       case Const::Init::Minimize:
0177         Minimize();
0178         break;
0179       case Const::Init::Maximize:
0180         Maximize();
0181         break;
0182       default:
0183         Maximize();
0184         break;
0185     }
0186 
0187   }  // end ctor(Const::init)
0188 
0189 
0190 
0191   // --------------------------------------------------------------------------
0192   //! Constructor accepting a F4A node and a list of subevents
0193   // --------------------------------------------------------------------------
0194   Types::GEvtInfo::GEvtInfo(
0195     PHCompositeNode* topNode,
0196     const bool embed,
0197     vector<int> evtsToGrab
0198   ) {
0199 
0200     SetInfo(topNode, embed, evtsToGrab);
0201 
0202   }  // end ctor(PHCompositeNode*, int, vector<int>)'
0203 
0204 }  // end SColdQcdCorrelatorAnalysis namespace
0205 
0206 // end ------------------------------------------------------------------------
0207