]>
Commit | Line | Data |
---|---|---|
4c40f4b9 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-2014, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | /* | |
16 | * Global binning definition for the charged particle pt analysis | |
17 | * | |
18 | * Author: Markus Fasel | |
19 | */ | |
20 | #include <TObjArray.h> | |
21 | #include "AliEMCalTriggerBinningComponent.h" | |
22 | ||
23 | ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerBinningDimension) | |
24 | ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerBinningComponent) | |
25 | ||
26 | namespace EMCalTriggerPtAnalysis { | |
27 | ||
d824c93c | 28 | //______________________________________________________________________________ |
4c40f4b9 | 29 | AliEMCalTriggerBinningComponent::AliEMCalTriggerBinningComponent() : |
30 | TObject(), | |
31 | fDimensions(NULL) | |
32 | { | |
33 | /* | |
34 | * Main constructor | |
35 | */ | |
36 | fDimensions = new TObjArray; | |
37 | fDimensions->SetOwner(); | |
38 | } | |
39 | ||
40 | //______________________________________________________________________________ | |
41 | AliEMCalTriggerBinningComponent::AliEMCalTriggerBinningComponent(const AliEMCalTriggerBinningComponent& ref) : | |
42 | TObject(ref), | |
43 | fDimensions(NULL) | |
44 | { | |
45 | /* | |
46 | * Copy constructor, creating a deep copy | |
47 | */ | |
48 | fDimensions = new TObjArray; | |
49 | fDimensions->SetOwner(); | |
50 | TIter dimIter(ref.fDimensions); | |
51 | AliEMCalTriggerBinningDimension *dim(NULL); | |
52 | while((dim = dynamic_cast<AliEMCalTriggerBinningDimension *>(dimIter()))) | |
53 | fDimensions->Add(new AliEMCalTriggerBinningDimension(*dim)); | |
54 | } | |
55 | ||
56 | //______________________________________________________________________________ | |
57 | AliEMCalTriggerBinningComponent& AliEMCalTriggerBinningComponent::operator=(const AliEMCalTriggerBinningComponent& ref) { | |
58 | /* | |
59 | * Assignment operator, doing a deep copy | |
60 | */ | |
61 | TObject::operator=(ref); | |
62 | if(&ref != this){ | |
63 | this->~AliEMCalTriggerBinningComponent(); | |
64 | ||
65 | fDimensions = new TObjArray; | |
66 | fDimensions->SetOwner(); | |
67 | TIter dimIter(ref.fDimensions); | |
68 | AliEMCalTriggerBinningDimension *dim(NULL); | |
69 | while((dim = dynamic_cast<AliEMCalTriggerBinningDimension *>(dimIter()))) | |
70 | fDimensions->Add(new AliEMCalTriggerBinningDimension(*dim)); | |
71 | } | |
72 | return *this; | |
73 | } | |
74 | ||
75 | //______________________________________________________________________________ | |
76 | AliEMCalTriggerBinningComponent::~AliEMCalTriggerBinningComponent() { | |
77 | /* | |
78 | * Destructor | |
79 | */ | |
80 | delete fDimensions; | |
81 | } | |
82 | ||
83 | //______________________________________________________________________________ | |
5b1df951 | 84 | AliEMCalTriggerBinningDimension* AliEMCalTriggerBinningComponent::GetBinning(const char* name) const { |
4c40f4b9 | 85 | /* |
86 | * Get binning information for a given axis. Return nullpointer if axis is not yet defined | |
87 | * | |
88 | * @param name: axis name | |
89 | * @return: the axis information | |
90 | */ | |
91 | return dynamic_cast<AliEMCalTriggerBinningDimension *>(fDimensions->FindObject(name)); | |
92 | } | |
93 | ||
94 | //______________________________________________________________________________ | |
95 | void AliEMCalTriggerBinningComponent::SetBinning(const char* dimname, int nbins, double* binning) { | |
96 | /* | |
97 | * Set binning for dimension. If not yet existing, create it | |
98 | * | |
99 | * @param dimname: axis name | |
100 | * @param nbins: Number of bins | |
101 | * @param binning: array of bin limits (size nbins+1) | |
102 | */ | |
103 | AliEMCalTriggerBinningDimension *dim = GetBinning(dimname); | |
104 | if(dim) dim->Set(nbins, binning); | |
105 | else { | |
106 | dim = new AliEMCalTriggerBinningDimension(dimname, nbins, binning); | |
107 | fDimensions->Add(dim); | |
108 | } | |
109 | } | |
110 | ||
5b1df951 | 111 | //______________________________________________________________________________ |
112 | void AliEMCalTriggerBinningComponent::SetBinning(const char* dimname, const TArrayD& binning) { | |
113 | /* | |
114 | * Set binning for dimension. If not yet existing, create it | |
115 | * | |
116 | * @param dimname: axis name | |
117 | * @param nbins: Number of bins | |
118 | * @param binning: array of bin limits (size nbins+1) | |
119 | */ | |
120 | AliEMCalTriggerBinningDimension *dim = GetBinning(dimname); | |
121 | if(dim) dim->Set(binning); | |
122 | else { | |
123 | dim = new AliEMCalTriggerBinningDimension(dimname, binning); | |
124 | fDimensions->Add(dim); | |
125 | } | |
126 | } | |
127 | ||
4c40f4b9 | 128 | } /* namespace EMCalTriggerPtAnalysis */ |
5b1df951 | 129 |