Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:56

0001 #ifndef ATOOLS_Phys_Particle_List_H
0002 #define ATOOLS_Phys_Particle_List_H
0003 
0004 #include "ATOOLS/Phys/Particle.H"
0005 #include <deque>
0006 #include <iostream>
0007 
0008 namespace ATOOLS {
0009 
0010   class Poincare;
0011 
0012   class Particle_List: public std::deque<Particle*> {
0013   private:
0014 
0015     class Destructor {
0016     private:
0017 
0018       Particle_List *p_list;
0019 
0020     public:
0021 
0022       // destructor
0023       Destructor(): p_list(NULL) {}
0024       Destructor(Particle_List *const list): p_list(list) {}
0025 
0026       // destructor
0027       inline ~Destructor() { if (p_list!=NULL) p_list->Clear(); }
0028 
0029     };// end of class Destructor
0030 
0031     Destructor m_destructor;
0032 
0033   public:
0034 
0035     // constructor
0036     Particle_List();
0037     Particle_List(const bool destruct);
0038 
0039     // member functions
0040     void Clear();
0041 
0042     void Boost(Poincare *const boost) const;
0043     void BoostBack(Poincare *const boost) const;
0044 
0045     void Rotate(Poincare *const rot) const;
0046     void RotateBack(Poincare *const rot) const;
0047     
0048     void Flip() const;
0049 
0050   };// end of class Particle_List
0051 
0052   std::ostream &operator<<(std::ostream &str,const Particle_List &list);
0053 
0054 }// end of namespace ATOOLS
0055 
0056 #endif