File indexing completed on 2025-04-19 09:10:14
0001 #ifndef SHERPA_SoftPhysics_Soft_Collision_Handler_H
0002 #define SHERPA_SoftPhysics_Soft_Collision_Handler_H
0003
0004 #include "ATOOLS/Phys/Particle_List.H"
0005 #include "ATOOLS/Phys/Blob_List.H"
0006 #include "ATOOLS/Org/CXXFLAGS.H"
0007 #include "ATOOLS/Org/Return_Value.H"
0008 #include "ATOOLS/Org/Terminator_Objects.H"
0009 #include "PDF/Main/Cluster_Definitions_Base.H"
0010 #include "PDF/Main/ISR_Handler.H"
0011
0012 namespace ATOOLS {
0013 class Cluster_Amplitude;
0014 class Cluster_Definitions_Base;
0015 }
0016 namespace SHRIMPS { class Shrimps; }
0017 namespace AMISIC { class Amisic; }
0018 namespace MODEL { class Model_Base; }
0019
0020 namespace SHERPA {
0021 class Soft_Collision_Handler: public ATOOLS::Terminator_Object {
0022 private:
0023 struct scmode {
0024 enum code {
0025 none,
0026 shrimps,
0027 amisic
0028 };
0029 };
0030 bool m_bunch_rescatter;
0031 std::string m_scmodel;
0032 std::string m_dir,m_sfile;
0033 scmode::code m_mode;
0034
0035 SHRIMPS::Shrimps * p_shrimps;
0036 AMISIC::Amisic * p_amisic;
0037
0038 void PrepareTerminate();
0039 double ImpactParameter();
0040 public:
0041 Soft_Collision_Handler(AMISIC::Amisic * amisic,SHRIMPS::Shrimps * shrimps,
0042 const bool bunch_rescatter=false);
0043 ~Soft_Collision_Handler();
0044
0045 ATOOLS::Return_Value::code GenerateMinimumBiasEvent(ATOOLS::Blob_List * blobs);
0046 void SetPosition(const size_t & beam,const ATOOLS::Vec4D & pos);
0047 ATOOLS::Return_Value::code GenerateBunchRescatter(ATOOLS::Blob_List * blobs);
0048 ATOOLS::Cluster_Amplitude * ClusterConfiguration(ATOOLS::Blob *const bl);
0049
0050 void SetShrimps(SHRIMPS::Shrimps * shrimps=NULL);
0051 void CleanUp();
0052
0053 inline void SetAmisic(AMISIC::Amisic * amisic) {
0054 p_amisic = amisic;
0055 m_scmodel = std::string("Amisic");
0056 m_mode = scmode::amisic;
0057 }
0058 inline const std::string & Soft_CollisionModel() const {
0059 return m_scmodel;
0060 }
0061 inline SHRIMPS::Shrimps * GetShrimps() const {
0062 return p_shrimps;
0063 }
0064 inline AMISIC::Amisic * GetAmisic() const {
0065 return p_amisic;
0066 }
0067 inline const bool & BeamRescatter() { return m_bunch_rescatter; }
0068 };
0069 typedef std::map<PDF::isr::id, Soft_Collision_Handler *> Soft_Collision_Handler_Map;
0070 }
0071 #endif
0072