File indexing completed on 2025-08-05 08:19:19
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #ifndef JETSCAPEWRITERSTREAMFILTER_H
0019 #define JETSCAPEWRITERSTREAMFILTER_H
0020
0021 #include "JetScapeWriterStream.h"
0022 #include "sigslot.h"
0023
0024 #define JETSCAPEWRITER_PARTONSHOWER 1
0025 #define JETSCAPEWRITER_PARTON 2
0026 #define JETSCAPEWRITER_VERTEX 4
0027 #define JETSCAPEWRITER_HADRON 8
0028
0029
0030 namespace Jetscape {
0031
0032 template<class T>
0033 class JetScapeWriterStreamFilter : public JetScapeWriterStream<T>
0034 {
0035
0036 public:
0037
0038 JetScapeWriterStreamFilter<T>() {};
0039 JetScapeWriterStreamFilter<T>(string m_file_name_out, unsigned char filter):
0040 JetScapeWriterStream<T>(m_file_name_out){
0041 displayFilter = filter;
0042 }
0043 virtual ~JetScapeWriterStreamFilter<T>(){};
0044
0045 sigslot::signal1<vector<shared_ptr<Hadron>>& > GetHadronList;
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055 void Write(weak_ptr<PartonShower> ps){
0056 if(displayFilter & JETSCAPEWRITER_PARTONSHOWER)
0057 {JetScapeWriterStream<T>::Write(ps);}}
0058
0059 void Write(weak_ptr<Parton> p){
0060 if(displayFilter & JETSCAPEWRITER_PARTON)
0061 {JetScapeWriterStream<T>::Write(p);}}
0062
0063 void Write(weak_ptr<Vertex> v){
0064 if(displayFilter & JETSCAPEWRITER_VERTEX)
0065 {JetScapeWriterStream<T>::Write(v);}}
0066
0067 void Write(weak_ptr<Hadron> h){
0068 if(displayFilter & JETSCAPEWRITER_HADRON)
0069 {JetScapeWriterStream<T>::Write(h);}}
0070
0071
0072
0073
0074
0075
0076
0077
0078 protected:
0079 unsigned char displayFilter;
0080
0081 };
0082
0083 typedef JetScapeWriterStreamFilter<ofstream> JetScapeWriterAsciiFilter;
0084 #ifdef USE_GZIP
0085 typedef JetScapeWriterStreamFilter<ogzstream> JetScapeWriterAsciiGZFilter;
0086 #endif
0087
0088 }
0089
0090 #endif