Fork me on GitHub

source: git/display/DelphesBranchElement.h@ 21eab4f

Last change on this file since 21eab4f was 1fa50c2, checked in by Pavel Demin <pavel.demin@…>, 10 years ago

fix GPLv3 header

  • Property mode set to 100644
File size: 4.6 KB
RevLine 
[5bb66c9]1/*
2 * Delphes: a framework for fast simulation of a generic collider experiment
3 * Copyright (C) 2012-2014 Universite catholique de Louvain (UCL), Belgium
[1fa50c2]4 *
[5bb66c9]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.
[1fa50c2]9 *
[5bb66c9]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.
[1fa50c2]14 *
[5bb66c9]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"
[4fd37d4]24#include "TClonesArray.h"
25#include "TClass.h"
[5bb66c9]26#include <exception>
[4fd37d4]27#include <iostream>
[5bb66c9]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:
[2ca23b5]36 DelphesBranchBase(const char* name="", TClonesArray* branch=NULL, const enum EColor color=kBlack, Float_t maxPt=50.):name_(name),branch_(branch),color_(color) {}
[4fd37d4]37 virtual ~DelphesBranchBase() {}
[5bb66c9]38 const char* GetName() const { return (const char*)name_; }
[4fd37d4]39 const char* GetType() const { return branch_ ? branch_->GetClass()->GetName() : "None"; }
[5bb66c9]40 virtual const char* GetClassName() = 0;
[4fd37d4]41 enum EColor GetColor() const { return color_; }
[5bb66c9]42 virtual void Reset() = 0;
[4fd37d4]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;
[3f51314]45 virtual std::vector<TLorentzVector> GetVectors() = 0;
[5bb66c9]46
47 protected:
48 TString name_;
[2ca23b5]49 Float_t maxPt_;
[4fd37d4]50 TClonesArray* branch_;
[5bb66c9]51 const enum EColor color_;
[4fd37d4]52 Float_t tkRadius_,tkHalfLength_, tk_Bz_;
[5bb66c9]53};
54
55// concrete implementations. EveContainer can be a TrackList, ElementList or CaloData.
56template<typename EveContainer> class DelphesBranchElement: public DelphesBranchBase
57{
58 public:
59 // constructor
[2ca23b5]60 DelphesBranchElement(const char* name="", TClonesArray* branch=NULL, const enum EColor color=kBlack, Float_t maxPt=50.):DelphesBranchBase(name, branch, color, maxPt) {
[4d999a57]61 throw std::exception();
62 }
[5bb66c9]63
64 // destructor
65 virtual ~DelphesBranchElement() { delete data_; }
66
67 // get the container (ElementList, TrackList, or CaloData)
68 EveContainer* GetContainer() { return data_; }
69
[4fd37d4]70 // tracking volume
71 virtual void SetTrackingVolume(Float_t r, Float_t l, Float_t Bz=0.) { tkRadius_ = r; tkHalfLength_ = l; tk_Bz_ = Bz; }
72
[5bb66c9]73 // resets the collection (before moving to the next event)
[4d999a57]74 virtual void Reset() {};
[5bb66c9]75
76 // template class name
77 virtual const char* GetClassName() { return data_->ClassName(); }
78
[4fd37d4]79 // read the branch and fill elements for display
80 virtual void ReadBranch() {}
81
[3f51314]82 // return the vector for all elements
83 virtual std::vector<TLorentzVector> GetVectors() { std::vector<TLorentzVector> v; return v; }
84
[5bb66c9]85 private:
86 EveContainer* data_;
87};
88
[4d999a57]89#if !defined(__CINT__) && !defined(__CLING__)
[115298d]90
[4d999a57]91// special case for calo towers
[2ca23b5]92template<> DelphesBranchElement<DelphesCaloData>::DelphesBranchElement(const char* name, TClonesArray* branch, const enum EColor color, Float_t maxPt);
[4d999a57]93template<> void DelphesBranchElement<DelphesCaloData>::Reset();
[4fd37d4]94template<> void DelphesBranchElement<DelphesCaloData>::ReadBranch();
[3f51314]95template<> std::vector<TLorentzVector> DelphesBranchElement<DelphesCaloData>::GetVectors();
[5bb66c9]96
97// special case for element lists
[2ca23b5]98template<> DelphesBranchElement<TEveElementList>::DelphesBranchElement(const char* name, TClonesArray* branch, const enum EColor color, Float_t maxPt);
[4d999a57]99template<> void DelphesBranchElement<TEveElementList>::Reset();
[4fd37d4]100template<> void DelphesBranchElement<TEveElementList>::ReadBranch();
[3f51314]101template<> std::vector<TLorentzVector> DelphesBranchElement<TEveElementList>::GetVectors();
[5bb66c9]102
103// special case for track lists
[2ca23b5]104template<> DelphesBranchElement<TEveTrackList>::DelphesBranchElement(const char* name, TClonesArray* branch, const enum EColor color, Float_t maxPt);
[4fd37d4]105template<> void DelphesBranchElement<TEveTrackList>::SetTrackingVolume(Float_t r, Float_t l, Float_t Bz);
[4d999a57]106template<> void DelphesBranchElement<TEveTrackList>::Reset();
[4fd37d4]107template<> void DelphesBranchElement<TEveTrackList>::ReadBranch();
[3f51314]108template<> std::vector<TLorentzVector> DelphesBranchElement<TEveTrackList>::GetVectors();
[115298d]109
[4d999a57]110#endif // CINT, CLING
[5bb66c9]111
112#endif //DelphesBranchElement_h
Note: See TracBrowser for help on using the repository browser.