1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
2 |
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> |
3 |
<title>PamCut: SmartCollection Class Reference</title> |
4 |
<link href="tabs.css" rel="stylesheet" type="text/css"> |
5 |
<link href="doxygen.css" rel="stylesheet" type="text/css"> |
6 |
</head><body> |
7 |
<!-- Generated by Doxygen 1.5.9 --> |
8 |
<div class="navigation" id="top"> |
9 |
<div class="tabs"> |
10 |
<ul> |
11 |
<li><a href="index.html"><span>Main Page</span></a></li> |
12 |
<li class="current"><a href="annotated.html"><span>Classes</span></a></li> |
13 |
<li><a href="files.html"><span>Files</span></a></li> |
14 |
</ul> |
15 |
</div> |
16 |
<div class="tabs"> |
17 |
<ul> |
18 |
<li><a href="annotated.html"><span>Class List</span></a></li> |
19 |
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> |
20 |
<li><a href="functions.html"><span>Class Members</span></a></li> |
21 |
</ul> |
22 |
</div> |
23 |
</div> |
24 |
<div class="contents"> |
25 |
<h1>SmartCollection Class Reference</h1><!-- doxytag: class="SmartCollection" --><!-- doxytag: inherits="PamCutCollection" -->A collection class designed to use <a class="el" href="classCollectionAction.html" title="An abstract class that defines the interface of a generic collection action.">CollectionAction</a> objects. |
26 |
<a href="#_details">More...</a> |
27 |
<p> |
28 |
<code>#include <<a class="el" href="SmartCollection_8h_source.html">SmartCollection.h</a>></code> |
29 |
<p> |
30 |
<div class="dynheader"> |
31 |
Inheritance diagram for SmartCollection:</div> |
32 |
<div class="dynsection"> |
33 |
|
34 |
<p><center><img src="classSmartCollection.png" usemap="#SmartCollection_map" border="0" alt=""></center> |
35 |
<map name="SmartCollection_map"> |
36 |
<area href="classPamCutCollection.html" alt="PamCutCollection" shape="rect" coords="77,56,221,80"> |
37 |
<area href="classPamCut.html" alt="PamCut" shape="rect" coords="77,0,221,24"> |
38 |
<area href="classSmartBlindCollection.html" alt="SmartBlindCollection" shape="rect" coords="0,168,144,192"> |
39 |
<area href="classVerboseCollection.html" alt="VerboseCollection" shape="rect" coords="154,168,298,192"> |
40 |
<area href="classVerboseBlindCollection.html" alt="VerboseBlindCollection" shape="rect" coords="0,224,144,248"> |
41 |
</map> |
42 |
</div> |
43 |
|
44 |
<p> |
45 |
<a href="classSmartCollection-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0"> |
46 |
<tr><td></td></tr> |
47 |
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr> |
48 |
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSmartCollection.html#597157bb186c4688cd305b62a197009d">SmartCollection</a> (const char *collectionName)</td></tr> |
49 |
|
50 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#597157bb186c4688cd305b62a197009d"></a><br></td></tr> |
51 |
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63fdadd219eb42065c6e9adc63558b63"></a><!-- doxytag: member="SmartCollection::~SmartCollection" ref="63fdadd219eb42065c6e9adc63558b63" args="()" --> |
52 |
</td><td class="memItemRight" valign="bottom"><a class="el" href="classSmartCollection.html#63fdadd219eb42065c6e9adc63558b63">~SmartCollection</a> ()</td></tr> |
53 |
|
54 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br></td></tr> |
55 |
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9265adb168bca295f264af65276a002b"></a><!-- doxytag: member="SmartCollection::AddAction" ref="9265adb168bca295f264af65276a002b" args="(CollectionAction &action)" --> |
56 |
virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSmartCollection.html#9265adb168bca295f264af65276a002b">AddAction</a> (<a class="el" href="classCollectionAction.html">CollectionAction</a> &action)</td></tr> |
57 |
|
58 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Adds an action to the <a class="el" href="classSmartCollection.html" title="A collection class designed to use CollectionAction objects.">SmartCollection</a>. <br></td></tr> |
59 |
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classCollectionAction.html">CollectionAction</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSmartCollection.html#acadaf64f683e7932c376e924e7020ea">GetAction</a> (unsigned int iAction)</td></tr> |
60 |
|
61 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the iAction-th action. <a href="#acadaf64f683e7932c376e924e7020ea"></a><br></td></tr> |
62 |
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSmartCollection.html#9b5b11a854b9e174218ea516ceffb34c">Setup</a> (PamLevel2 *events)</td></tr> |
63 |
|
64 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">The pre-analysis task definition. <a href="#9b5b11a854b9e174218ea516ceffb34c"></a><br></td></tr> |
65 |
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSmartCollection.html#8105730615ad127a482a7fb399695977">Finalize</a> ()</td></tr> |
66 |
|
67 |
<tr><td class="mdescLeft"> </td><td class="mdescRight">The post-analysis task definition. <a href="#8105730615ad127a482a7fb399695977"></a><br></td></tr> |
68 |
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classSmartCollection.html#98213ec078e9b94ea70c72132757da46">ApplyCut</a> (PamLevel2 *event)</td></tr> |
69 |
|
70 |
<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr> |
71 |
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a80a9cf5cab3683a61b47a1145ff8f15"></a><!-- doxytag: member="SmartCollection::_actions" ref="a80a9cf5cab3683a61b47a1145ff8f15" args="" --> |
72 |
std::vector< <a class="el" href="classCollectionAction.html">CollectionAction</a> * > </td><td class="memItemRight" valign="bottom"><b>_actions</b></td></tr> |
73 |
|
74 |
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="732af2b9a16d0c098ce90ed29e15d09f"></a><!-- doxytag: member="SmartCollection::_actionsPositions" ref="732af2b9a16d0c098ce90ed29e15d09f" args="" --> |
75 |
std::vector< unsigned int > </td><td class="memItemRight" valign="bottom"><b>_actionsPositions</b></td></tr> |
76 |
|
77 |
</table> |
78 |
<hr><a name="_details"></a><h2>Detailed Description</h2> |
79 |
A collection class designed to use <a class="el" href="classCollectionAction.html" title="An abstract class that defines the interface of a generic collection action.">CollectionAction</a> objects. |
80 |
<p> |
81 |
The <a class="el" href="classSmartCollection.html" title="A collection class designed to use CollectionAction objects.">SmartCollection</a> class is designed to handle <a class="el" href="classCollectionAction.html" title="An abstract class that defines the interface of a generic collection action.">CollectionAction</a> objects. It holds a vector of these objects and takes care of calling Setup and Finalize for each of them at the beginning and at the end of the analysis, respectively. Actions can be added to the <a class="el" href="classSmartCollection.html" title="A collection class designed to use CollectionAction objects.">SmartCollection</a> by means of the <a class="el" href="classSmartCollection.html#9265adb168bca295f264af65276a002b" title="Adds an action to the SmartCollection.">AddAction()</a> method. If a bunch of cuts have been already added to the collection, the action will be logically placed after the cuts. The <a class="el" href="classSmartCollection.html" title="A collection class designed to use CollectionAction objects.">SmartCollection</a> will call <a class="el" href="classCollectionAction.html#077319900b1cde36b6baca9e6699ec5a" title="Routine for selected events.">CollectionAction::OnGood()</a> if the cuts preceding the actions are satisfied, and <a class="el" href="classCollectionAction.html#ef4ee9fd63c0d232e90694e068e6e339" title="Routine for discarded events.">CollectionAction::OnBad()</a> if at least one of them fails. An action will not be sensitive to cuts added to the collection after the action itself. The resulting structure is composed by bunches of cuts intertwined by actions, which are "executed" depending on the result of the bunch of cuts that precedes the action. Note that <a class="el" href="classCollectionAction.html#ef4ee9fd63c0d232e90694e068e6e339" title="Routine for discarded events.">CollectionAction::OnBad()</a> is called only for those actions at the end of the bunch where the first failed cut is: if after these actions there are other bunches of cuts and actions, they will be ignored. For example, in the sequence below:<p> |
82 |
| cut1 | cut2 | action1 | action2 | cut3 | cut4 | action3 | ...<p> |
83 |
action1 and action2 are executed (eg., OnGood is called for them) if cut1 and cut2 are both satisfied, then cut3 and cut4 are evaluated and if both of them are satisfied then action3 is executed. If, for example, cut 1 or cut2 fail, then OnBad is called for action1 and action2; however, cut3, cut4, action3 and all that follows are ignored. The analysis goes on with the next event. <hr><h2>Constructor & Destructor Documentation</h2> |
84 |
<a class="anchor" name="597157bb186c4688cd305b62a197009d"></a><!-- doxytag: member="SmartCollection::SmartCollection" ref="597157bb186c4688cd305b62a197009d" args="(const char *collectionName)" --> |
85 |
<div class="memitem"> |
86 |
<div class="memproto"> |
87 |
<table class="memname"> |
88 |
<tr> |
89 |
<td class="memname">SmartCollection::SmartCollection </td> |
90 |
<td>(</td> |
91 |
<td class="paramtype">const char * </td> |
92 |
<td class="paramname"> <em>collectionName</em> </td> |
93 |
<td> ) </td> |
94 |
<td><code> [inline]</code></td> |
95 |
</tr> |
96 |
</table> |
97 |
</div> |
98 |
<div class="memdoc"> |
99 |
|
100 |
<p> |
101 |
Constructor. |
102 |
<p> |
103 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
104 |
<table border="0" cellspacing="2" cellpadding="0"> |
105 |
<tr><td valign="top"></td><td valign="top"><em>collectionName</em> </td><td>The collection's name. </td></tr> |
106 |
</table> |
107 |
</dl> |
108 |
|
109 |
</div> |
110 |
</div><p> |
111 |
<hr><h2>Member Function Documentation</h2> |
112 |
<a class="anchor" name="98213ec078e9b94ea70c72132757da46"></a><!-- doxytag: member="SmartCollection::ApplyCut" ref="98213ec078e9b94ea70c72132757da46" args="(PamLevel2 *event)" --> |
113 |
<div class="memitem"> |
114 |
<div class="memproto"> |
115 |
<table class="memname"> |
116 |
<tr> |
117 |
<td class="memname">int SmartCollection::ApplyCut </td> |
118 |
<td>(</td> |
119 |
<td class="paramtype">PamLevel2 * </td> |
120 |
<td class="paramname"> <em>event</em> </td> |
121 |
<td> ) </td> |
122 |
<td><code> [virtual]</code></td> |
123 |
</tr> |
124 |
</table> |
125 |
</div> |
126 |
<div class="memdoc"> |
127 |
|
128 |
<p> |
129 |
Applies the cuts and executes the actions.<p> |
130 |
When cuts are applied, a <a class="el" href="classSmartCollection.html" title="A collection class designed to use CollectionAction objects.">SmartCollection</a> will also execute the actions at the end of the bunches of cuts.<p> |
131 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
132 |
<table border="0" cellspacing="2" cellpadding="0"> |
133 |
<tr><td valign="top"></td><td valign="top"><em>event</em> </td><td>The event to analyze. </td></tr> |
134 |
</table> |
135 |
</dl> |
136 |
|
137 |
<p>Reimplemented from <a class="el" href="classPamCutCollection.html#e7af429a3afef3685cbd5aa076ef96e5">PamCutCollection</a>.</p> |
138 |
|
139 |
<p>Reimplemented in <a class="el" href="classSmartBlindCollection.html#1eb231a8a437018bfd966644c7b18ba4">SmartBlindCollection</a>.</p> |
140 |
|
141 |
</div> |
142 |
</div><p> |
143 |
<a class="anchor" name="8105730615ad127a482a7fb399695977"></a><!-- doxytag: member="SmartCollection::Finalize" ref="8105730615ad127a482a7fb399695977" args="()" --> |
144 |
<div class="memitem"> |
145 |
<div class="memproto"> |
146 |
<table class="memname"> |
147 |
<tr> |
148 |
<td class="memname">void SmartCollection::Finalize </td> |
149 |
<td>(</td> |
150 |
<td class="paramname"> </td> |
151 |
<td> ) </td> |
152 |
<td><code> [virtual]</code></td> |
153 |
</tr> |
154 |
</table> |
155 |
</div> |
156 |
<div class="memdoc"> |
157 |
|
158 |
<p> |
159 |
The post-analysis task definition. |
160 |
<p> |
161 |
This override of the <a class="el" href="classSmartCollection.html#8105730615ad127a482a7fb399695977" title="The post-analysis task definition.">Finalize()</a> method calls <a class="el" href="classPamCutCollection.html#15785c75fb13b998422739e741bb5c01" title="The post-analysis task definition.">PamCutCollection::Finalize()</a> and then the <a class="el" href="classSmartCollection.html#8105730615ad127a482a7fb399695977" title="The post-analysis task definition.">Finalize()</a> method of each action contained in the <a class="el" href="classSmartCollection.html" title="A collection class designed to use CollectionAction objects.">SmartCollection</a>. |
162 |
<p>Reimplemented from <a class="el" href="classPamCutCollection.html#15785c75fb13b998422739e741bb5c01">PamCutCollection</a>.</p> |
163 |
|
164 |
<p>Reimplemented in <a class="el" href="classVerboseBlindCollection.html#43d6ea7b5ea35c5dbb342e23584b79ee">VerboseBlindCollection</a>, and <a class="el" href="classVerboseCollection.html#3fcdf28d50507d772647d4306a78f3cc">VerboseCollection</a>.</p> |
165 |
|
166 |
</div> |
167 |
</div><p> |
168 |
<a class="anchor" name="acadaf64f683e7932c376e924e7020ea"></a><!-- doxytag: member="SmartCollection::GetAction" ref="acadaf64f683e7932c376e924e7020ea" args="(unsigned int iAction)" --> |
169 |
<div class="memitem"> |
170 |
<div class="memproto"> |
171 |
<table class="memname"> |
172 |
<tr> |
173 |
<td class="memname"><a class="el" href="classCollectionAction.html">CollectionAction</a> * SmartCollection::GetAction </td> |
174 |
<td>(</td> |
175 |
<td class="paramtype">unsigned int </td> |
176 |
<td class="paramname"> <em>iAction</em> </td> |
177 |
<td> ) </td> |
178 |
<td></td> |
179 |
</tr> |
180 |
</table> |
181 |
</div> |
182 |
<div class="memdoc"> |
183 |
|
184 |
<p> |
185 |
Returns the iAction-th action. |
186 |
<p> |
187 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
188 |
<table border="0" cellspacing="2" cellpadding="0"> |
189 |
<tr><td valign="top"></td><td valign="top"><em>iAction</em> </td><td>The index of the desired <a class="el" href="classCollectionAction.html" title="An abstract class that defines the interface of a generic collection action.">CollectionAction</a>, defined as the insertion order (from 0 to #actions-1, see <a class="el" href="classSmartCollection.html#9265adb168bca295f264af65276a002b" title="Adds an action to the SmartCollection.">AddAction()</a>). </td></tr> |
190 |
</table> |
191 |
</dl> |
192 |
<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to the iAction-th action; NULL if the specified action cannot be found or if no actions are present. </dd></dl> |
193 |
|
194 |
</div> |
195 |
</div><p> |
196 |
<a class="anchor" name="9b5b11a854b9e174218ea516ceffb34c"></a><!-- doxytag: member="SmartCollection::Setup" ref="9b5b11a854b9e174218ea516ceffb34c" args="(PamLevel2 *events)" --> |
197 |
<div class="memitem"> |
198 |
<div class="memproto"> |
199 |
<table class="memname"> |
200 |
<tr> |
201 |
<td class="memname">void SmartCollection::Setup </td> |
202 |
<td>(</td> |
203 |
<td class="paramtype">PamLevel2 * </td> |
204 |
<td class="paramname"> <em>events</em> </td> |
205 |
<td> ) </td> |
206 |
<td><code> [virtual]</code></td> |
207 |
</tr> |
208 |
</table> |
209 |
</div> |
210 |
<div class="memdoc"> |
211 |
|
212 |
<p> |
213 |
The pre-analysis task definition. |
214 |
<p> |
215 |
This override of the <a class="el" href="classSmartCollection.html#9b5b11a854b9e174218ea516ceffb34c" title="The pre-analysis task definition.">Setup()</a> method calls <a class="el" href="classSmartCollection.html#9b5b11a854b9e174218ea516ceffb34c" title="The pre-analysis task definition.">Setup()</a> for the base class <a class="el" href="classPamCutCollection.html" title="A class which applies a set of cuts to Pamela data.">PamCutCollection</a>, and subsequently for each action contained in the <a class="el" href="classSmartCollection.html" title="A collection class designed to use CollectionAction objects.">SmartCollection</a>.<p> |
216 |
<dl compact><dt><b>Parameters:</b></dt><dd> |
217 |
<table border="0" cellspacing="2" cellpadding="0"> |
218 |
<tr><td valign="top"></td><td valign="top"><em>events</em> </td><td>The PamLevel2 pointer to the events that will be analyzed. Used only as parameter for <a class="el" href="classCollectionAction.html#13adbcacf5e088f7979f0644a65372b4" title="The initialization routine.">CollectionAction::Setup()</a>. </td></tr> |
219 |
</table> |
220 |
</dl> |
221 |
|
222 |
<p>Reimplemented from <a class="el" href="classPamCutCollection.html#982821389af5e585688611d733b3a7b0">PamCutCollection</a>.</p> |
223 |
|
224 |
</div> |
225 |
</div><p> |
226 |
<hr>The documentation for this class was generated from the following files:<ul> |
227 |
<li>Collections/SmartCollection/<a class="el" href="SmartCollection_8h_source.html">SmartCollection.h</a><li>Collections/SmartCollection/<a class="el" href="SmartCollection_8cpp.html">SmartCollection.cpp</a></ul> |
228 |
</div> |
229 |
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 5 15:09:04 2009 for PamCut by |
230 |
<a href="http://www.doxygen.org/index.html"> |
231 |
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> |
232 |
</body> |
233 |
</html> |