Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
REveTreeTools.hxx
Go to the documentation of this file.
1 // @(#)root/eve7:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT7_REveTreeTools
13 #define ROOT7_REveTreeTools
14 
15 #include "TSelectorDraw.h"
16 #include "TEventList.h"
17 
18 namespace ROOT {
19 namespace Experimental {
20 
21 /////////////////////////////////////////////////////////////////////////////////
22 /// REveSelectorToEventList
23 /// TSelector that stores entry numbers of matching TTree entries into an event-list.
24 /////////////////////////////////////////////////////////////////////////////////
25 
26 class REveSelectorToEventList : public TSelectorDraw
27 {
28  REveSelectorToEventList(const REveSelectorToEventList &); // Not implemented
29  REveSelectorToEventList &operator=(const REveSelectorToEventList &); // Not implemented
30 
31 protected:
32  TEventList *fEvList{nullptr};
33  TList fInput;
34 
35 public:
36  REveSelectorToEventList(TEventList *evl, const char *sel);
37  virtual ~REveSelectorToEventList() {}
38 
39  virtual Int_t Version() const { return 1; }
40  virtual Bool_t Process(Long64_t entry);
41 
42  ClassDef(REveSelectorToEventList, 1); // TSelector that stores entry numbers of matching TTree entries into an event-list.
43 };
44 
45 /////////////////////////////////////////////////////////////////////////////////
46 /// REvePointSelectorConsumer
47 /// Virtual base for classes that can be filled from TTree data via the REvePointSelector class.
48 /////////////////////////////////////////////////////////////////////////////////
49 
50 class REvePointSelector;
51 
52 class REvePointSelectorConsumer
53 {
54 public:
55  enum ETreeVarType_e { kTVT_XYZ, kTVT_RPhiZ };
56 
57 protected:
58  ETreeVarType_e fSourceCS; // Coordinate-System of the source tree variables
59 
60 public:
61  REvePointSelectorConsumer(ETreeVarType_e cs = kTVT_XYZ) : fSourceCS(cs) {}
62  virtual ~REvePointSelectorConsumer() {}
63 
64  virtual void InitFill(Int_t /*subIdNum*/) {}
65  virtual void TakeAction(REvePointSelector *) = 0;
66 
67  ETreeVarType_e GetSourceCS() const { return fSourceCS; }
68  void SetSourceCS(ETreeVarType_e cs) { fSourceCS = cs; }
69 };
70 
71 /////////////////////////////////////////////////////////////////////////////////
72 /// REvePointSelector
73 /// TSelector for direct extraction of point-like data from a Tree.
74 /////////////////////////////////////////////////////////////////////////////////
75 
76 class REvePointSelector : public TSelectorDraw
77 {
78  REvePointSelector(const REvePointSelector &); // Not implemented
79  REvePointSelector &operator=(const REvePointSelector &); // Not implemented
80 
81 protected:
82  TTree *fTree{nullptr};
83  REvePointSelectorConsumer *fConsumer{nullptr};
84 
85  TString fVarexp;
86  TString fSelection;
87 
88  TString fSubIdExp;
89  Int_t fSubIdNum;
90 
91  TList fInput;
92 
93 public:
94  REvePointSelector(TTree *t = nullptr, REvePointSelectorConsumer *c = nullptr, const char *vexp = "", const char *sel = "");
95  virtual ~REvePointSelector() {}
96 
97  virtual Long64_t Select(const char *selection = nullptr);
98  virtual Long64_t Select(TTree *t, const char *selection = nullptr);
99  virtual void TakeAction();
100 
101  TTree *GetTree() const { return fTree; }
102  void SetTree(TTree *t) { fTree = t; }
103 
104  REvePointSelectorConsumer *GetConsumer() const { return fConsumer; }
105  void SetConsumer(REvePointSelectorConsumer *c) { fConsumer = c; }
106 
107  const char *GetVarexp() const { return fVarexp; }
108  void SetVarexp(const char *v) { fVarexp = v; }
109 
110  const char *GetSelection() const { return fSelection; }
111  void SetSelection(const char *s) { fSelection = s; }
112 
113  const char *GetSubIdExp() const { return fSubIdExp; }
114  void SetSubIdExp(const char *s) { fSubIdExp = s; }
115 
116  Int_t GetSubIdNum() const { return fSubIdNum; }
117 
118  ClassDef(REvePointSelector, 1); // TSelector for direct extraction of point-like data from a Tree.
119 };
120 
121 } // namespace Experimental
122 } // namespace ROOT
123 
124 #endif