12 #ifndef ROOT_TProofDraw
13 #define ROOT_TProofDraw
36 class TTreeFormulaManager;
49 class TProofDraw :
public TSelector {
51 friend class TProofPlayer;
54 TTreeDrawArgsParser fTreeDrawArgsParser;
58 TTreeFormulaManager *fManager;
60 TTreeFormula *fVar[4];
61 TTreeFormula *fSelect;
68 void SetCanvas(
const char *objname);
69 void SetDrawAtt(TObject *o);
70 void SetError(
const char *sub,
const char *mesg);
73 enum { kWarn = BIT(12) };
75 virtual Bool_t CompileVariables();
76 virtual void ClearFormula();
77 virtual Bool_t ProcessSingle(Long64_t , Int_t );
78 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v) = 0;
79 virtual void DefVar() = 0;
83 virtual ~TProofDraw();
84 virtual int Version()
const {
return 1; }
85 virtual void Init(TTree *);
86 virtual void Begin(TTree *);
87 virtual void SlaveBegin(TTree *);
88 virtual Bool_t Notify();
89 virtual Bool_t Process(Long64_t );
90 virtual void SlaveTerminate();
91 virtual void Terminate();
93 ClassDef(TProofDraw,0)
97 class TProofDrawHist :
public TProofDraw {
107 virtual void Begin1D(TTree *t);
108 virtual void Begin2D(TTree *t);
109 virtual void Begin3D(TTree *t);
110 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
111 virtual void DefVar();
114 TProofDrawHist() : fHistogram(0) { }
115 virtual void Begin(TTree *t);
116 virtual void Init(TTree *);
117 virtual void SlaveBegin(TTree *);
118 virtual void Terminate();
120 ClassDef(TProofDrawHist,0)
124 class TProofDrawEventList :
public TProofDraw {
130 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
131 virtual void DefVar() { }
134 TProofDrawEventList() : fElist(0), fEventLists(0) {}
135 ~TProofDrawEventList() {}
137 virtual void Init(TTree *);
138 virtual void SlaveBegin(TTree *);
139 virtual void SlaveTerminate();
140 virtual void Terminate();
142 ClassDef(TProofDrawEventList,0)
145 class TProofDrawEntryList :
public TProofDraw {
149 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
150 virtual void DefVar() {}
153 TProofDrawEntryList() : fElist(0) {}
154 ~TProofDrawEntryList() {}
156 virtual void Init(TTree *);
157 virtual void SlaveBegin(TTree *);
158 virtual void SlaveTerminate();
159 virtual void Terminate();
161 ClassDef(TProofDrawEntryList, 0)
165 class TProofDrawProfile :
public TProofDraw {
170 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
171 virtual void DefVar();
174 TProofDrawProfile() : fProfile(0) { }
175 virtual void Init(TTree *);
176 virtual void Begin(TTree *t);
177 virtual void SlaveBegin(TTree *);
178 virtual void Terminate();
180 ClassDef(TProofDrawProfile,0)
184 class TProofDrawProfile2D :
public TProofDraw {
187 TProfile2D *fProfile;
189 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
190 virtual void DefVar();
193 TProofDrawProfile2D() : fProfile(0) { }
194 virtual void Init(TTree *);
195 virtual void Begin(TTree *t);
196 virtual void SlaveBegin(TTree *);
197 virtual void Terminate();
199 ClassDef(TProofDrawProfile2D,0)
203 class TProofDrawGraph :
public TProofDraw {
208 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
209 virtual void DefVar() { }
212 TProofDrawGraph() : fGraph(0) { }
213 virtual void Init(TTree *tree);
214 virtual void SlaveBegin(TTree *);
215 virtual void Terminate();
217 ClassDef(TProofDrawGraph,0)
221 class TProofDrawPolyMarker3D :
public TProofDraw {
224 TPolyMarker3D *fPolyMarker3D;
226 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
227 virtual void DefVar() { }
230 TProofDrawPolyMarker3D() : fPolyMarker3D(0) { }
231 virtual void Init(TTree *tree);
232 virtual void SlaveBegin(TTree *);
233 virtual void Terminate();
235 ClassDef(TProofDrawPolyMarker3D,0)
238 template <
typename T>
239 class TProofVectorContainer :
public TNamed {
244 std::vector<T> *fVector;
247 TProofVectorContainer(std::vector<T>* anVector) : fVector(anVector) { }
248 TProofVectorContainer() : fVector(0) { }
249 ~TProofVectorContainer() {
delete fVector; }
251 std::vector<T> *GetVector()
const {
return fVector; }
252 Long64_t Merge(TCollection* list);
254 ClassDef(TProofVectorContainer,1)
257 class TProofDrawListOfGraphs :
public TProofDraw {
263 Point3D_t(Double_t x, Double_t y, Double_t z) : fX(x), fY(y), fZ(z) { }
264 Point3D_t() : fX(0), fY(0), fZ(0) { }
268 TProofVectorContainer<Point3D_t> *fPoints;
269 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
270 virtual void DefVar() { }
273 TProofDrawListOfGraphs() : fPoints(0) { }
274 virtual void SlaveBegin(TTree *);
275 virtual void Terminate();
277 ClassDef(TProofDrawListOfGraphs,0)
281 class TProofDrawListOfPolyMarkers3D :
public TProofDraw {
286 Double_t fX, fY, fZ, fT;
287 Point4D_t(Double_t x, Double_t y, Double_t z, Double_t t) : fX(x), fY(y), fZ(z), fT(t) { }
288 Point4D_t() : fX(0), fY(0), fZ(0), fT(0) { }
292 TProofVectorContainer<Point4D_t> *fPoints;
293 virtual void DoFill(Long64_t entry, Double_t w,
const Double_t *v);
294 virtual void DefVar() { }
297 TProofDrawListOfPolyMarkers3D() : fPoints(0) { }
298 virtual void SlaveBegin(TTree *);
299 virtual void Terminate();
301 ClassDef(TProofDrawListOfPolyMarkers3D,0)
305 template <
typename T>
306 Long64_t TProofVectorContainer<T>::Merge(TCollection* li)
314 std::back_insert_iterator<std::vector<T> > ii(*fVector);
315 while (TObject* o = next()) {
316 TProofVectorContainer<T> *vh =
dynamic_cast<TProofVectorContainer<T>*
> (o);
319 "Cannot merge - an object which doesn't inherit from TProofVectorContainer<T> found in the list");
322 std::copy(vh->GetVector()->begin(), vh->GetVector()->end(), ii);
324 return fVector->size();