Fork me on GitHub

source: git/display/DelphesBranchElement.h@ 8b04b31

ImprovedOutputFile Timing dual_readout llp
Last change on this file since 8b04b31 was 4fd37d4, checked in by Christophe Delaere <christophe.delaere@…>, 10 years ago

Code reorganization

Moved the methods that read branches to the correponding BranchElements.

  • Property mode set to 100644
File size: 4.0 KB
Line 
1/*
2 * Delphes: a framework for fast simulation of a generic collider experiment
3 * Copyright (C) 2012-2014 Universite catholique de Louvain (UCL), Belgium
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifndef DelphesBranchElement_h
20#define DelphesBranchElement_h
21
22#include "TColor.h"
23#include "TString.h"
24#include "TClonesArray.h"
25#include "TClass.h"
26#include <exception>
27#include <iostream>
28#include "display/DelphesCaloData.h"
29#include "TEveElement.h"
30#include "TEveTrack.h"
31
32// virtual class to represent objects from a Delphes-tree branch
33class DelphesBranchBase
34{
35 public:
36 DelphesBranchBase(const char* name="", TClonesArray* branch=NULL, const enum EColor color=kBlack):name_(name),branch_(branch),color_(color) {}
37 virtual ~DelphesBranchBase() {}
38 const char* GetName() const { return (const char*)name_; }
39 const char* GetType() const { return branch_ ? branch_->GetClass()->GetName() : "None"; }
40 virtual const char* GetClassName() = 0;
41 enum EColor GetColor() const { return color_; }
42 virtual void Reset() = 0;
43 virtual void SetTrackingVolume(Float_t r, Float_t l, Float_t Bz=0.) { tkRadius_ = r; tkHalfLength_ = l; tk_Bz_ = Bz; }
44 virtual void ReadBranch() = 0;
45
46 protected:
47 TString name_;
48 TClonesArray* branch_;
49 const enum EColor color_;
50 Float_t tkRadius_,tkHalfLength_, tk_Bz_;
51};
52
53// concrete implementations. EveContainer can be a TrackList, ElementList or CaloData.
54template<typename EveContainer> class DelphesBranchElement: public DelphesBranchBase
55{
56 public:
57 // constructor
58 DelphesBranchElement(const char* name="", TClonesArray* branch=NULL, const enum EColor color=kBlack):DelphesBranchBase(name, branch, color) {
59 throw std::exception();
60 }
61
62 // destructor
63 virtual ~DelphesBranchElement() { delete data_; }
64
65 // get the container (ElementList, TrackList, or CaloData)
66 EveContainer* GetContainer() { return data_; }
67
68 // tracking volume
69 virtual void SetTrackingVolume(Float_t r, Float_t l, Float_t Bz=0.) { tkRadius_ = r; tkHalfLength_ = l; tk_Bz_ = Bz; }
70
71 // resets the collection (before moving to the next event)
72 virtual void Reset() {};
73
74 // template class name
75 virtual const char* GetClassName() { return data_->ClassName(); }
76
77 // read the branch and fill elements for display
78 virtual void ReadBranch() {}
79
80 private:
81 EveContainer* data_;
82};
83
84#if !defined(__CINT__) && !defined(__CLING__)
85
86// special case for calo towers
87template<> DelphesBranchElement<DelphesCaloData>::DelphesBranchElement(const char* name, TClonesArray* branch, const enum EColor color);
88template<> void DelphesBranchElement<DelphesCaloData>::Reset();
89template<> void DelphesBranchElement<DelphesCaloData>::ReadBranch();
90
91// special case for element lists
92template<> DelphesBranchElement<TEveElementList>::DelphesBranchElement(const char* name, TClonesArray* branch, const enum EColor color);
93template<> void DelphesBranchElement<TEveElementList>::Reset();
94template<> void DelphesBranchElement<TEveElementList>::ReadBranch();
95
96// special case for track lists
97template<> DelphesBranchElement<TEveTrackList>::DelphesBranchElement(const char* name, TClonesArray* branch, const enum EColor color);
98template<> void DelphesBranchElement<TEveTrackList>::SetTrackingVolume(Float_t r, Float_t l, Float_t Bz);
99template<> void DelphesBranchElement<TEveTrackList>::Reset();
100template<> void DelphesBranchElement<TEveTrackList>::ReadBranch();
101
102#endif // CINT, CLING
103
104#endif //DelphesBranchElement_h
Note: See TracBrowser for help on using the repository browser.