simple-tof-analysis
 All Classes Namespaces Functions Variables Groups Pages
TSArgList.h
1 /*
2  * TSArgList.h
3  *
4  * Created on: Aug 5, 2014
5  * Author: Silvestro di Luise
6  * Silvestro.Di.Luise@cern.ch
7  *
8  *
9  * Wrap root TList
10  * Used as container for any object which inherits from TObject
11  *
12  *
13  */
14 
15 #ifndef TSARGLIST_H_
16 #define TSARGLIST_H_
17 
18 #include <TObject.h>
19 #include <TList.h>
20 
21 /*
22  *
23  */
24 
25 
26 class TSArgList;
27 
28 typedef TSArgList TSArgSet;
29 
30 class TSArgList: public TList {
31 
32 public:
33 
34  TSArgList();
35  TSArgList(TString name, TString title="");
36  TSArgList(TObject &o1);
37  TSArgList(TObject &o1, TObject &o2);
38  TSArgList(TObject &o1, TObject &o2, TObject &o3);
39  TSArgList(TObject &o1, TObject &o2, TObject &o3, TObject &o4);
40  TSArgList(TObject &o1, TObject &o2, TObject &o3, TObject &o4, TObject &o5);
41 
42  TSArgList(const TSArgList &);
43 
44  virtual ~TSArgList();
45 
46  void Add(TObject *o);
47  void AddOnce(TObject *o);
48  void Add(const TSArgList &);
49  void AddOnce(const TSArgList &);
50 
51  void Copy(const TSArgList &);
52  TSArgList* Clone(TString name="") const;
53 
54  void Init();
55 
56  long int LoopCount() const {return fCount;}
57  int LoopStart() const;
58  int LoopNext() const;
59  TObject* LoopAt() const;
60 
61  void Print() const;
62  void PrintParams() const;
63  void PrintVariables() const;
64 
65 private:
66 
67  mutable TObjLink *objLink;
68  mutable bool fLoopStart;
69 
70  mutable int fSize;
71  mutable long int fCount;
72 };
73 
74 
75 //
76 // ---------- inline functions ----------
77 //
78 
79 
80 
81 inline int TSArgList::LoopStart() const
82 {
83 
84  objLink = FirstLink();
85 
86  fLoopStart = true;
87 
88  fSize = GetSize();
89 
90  fCount = 0;
91 
92  return 0;
93 }
94 
95 
96 
97 inline int TSArgList::LoopNext() const
98 {
99 
100  if(!fLoopStart) objLink = objLink->Next();
101  else fLoopStart = false;
102 
103  fCount++;
104 
105  return !objLink ? 0 : fSize;
106 }
107 
108 
109 
110 inline TObject* TSArgList::LoopAt() const
111 {
112 
113  return !objLink ? 0 : objLink->GetObject();
114 
115 }
116 
117 
118 #endif /* TSARGLIST_H_ */
Definition: TSArgList.h:30