#ifndef _Transition_ #define _Transition_ #include #include #include "particleType.h" #include "HCA_Amplitudes/resonanceinfo.h" #include "ResonanceDecay.h" #include "Particle.h" #include "HCA_TensorContraction/HCA_ContractionResult.h" class ResonanceNodeGenerator; class NodeBase { public: virtual ~NodeBase(void){} }; class ResonanceNode : public NodeBase { public: ResonanceNode(Particle* locParticle, NodeBase* locPreviousDecayNode) : dNodeParticle(locParticle), dPreviousDecayNode(locPreviousDecayNode), dL12(0), dS12Times2(0), dLeftFinalNode(NULL), dRightFinalNode(NULL), dIsProductionNodeFlag(false), dResonanceRecognizedFlag(false) {} //Left/Right Nodes are BOTH NULL if dNodeParticle is a final state particle Particle* dNodeParticle; //if dIsProductionNodeFlag is true, this is the s-channel resonance NodeBase* dPreviousDecayNode; //if dIsProductionNodeFlag is true, this points to the resonance decay node (rather than "previous") int dL12; int dS12Times2; ResonanceNode* dLeftFinalNode; ResonanceNode* dRightFinalNode; bool dIsProductionNodeFlag; bool dResonanceRecognizedFlag; int dNumContractionSchemes; map > dTensorAmplitudes; //key is Helicity12x2, deque index is contraction scheme }; class ExchangeNode : public NodeBase { //Initial particles are assumed to be the same as those set in ResonanceNodeGenerator friend class ResonanceNodeGenerator; public: ExchangeNode(Particle_t locLeftFinalPID, Particle_t locRightFinalPID, string locExchangeClassName) : dLeftFinalPID(locLeftFinalPID), dRightFinalPID(locRightFinalPID), dExchangeClassName(locExchangeClassName) {} //Final Particles Particle_t dLeftFinalPID; Particle_t dRightFinalPID; //USER SETUP INFO //Class Name string dExchangeClassName; //Exchange Params string dClassConfigArguments; //these will be prefaced by the helicity sum string in the input to the class constructor vector dFitParams; //Setup by node creator Particle* dBeamParticle; Particle* dTargetParticle; ResonanceNode* dLeftFinalNode; ResonanceNode* dRightFinalNode; }; #endif //_Transition_