]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/Tracks/AliEMCalTriggerBinningComponent.cxx
Refactoring of the EMCAL jet package:
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / Tracks / AliEMCalTriggerBinningComponent.cxx
CommitLineData
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
23ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerBinningDimension)
24ClassImp(EMCalTriggerPtAnalysis::AliEMCalTriggerBinningComponent)
25
26namespace EMCalTriggerPtAnalysis {
27
d824c93c 28//______________________________________________________________________________
4c40f4b9 29AliEMCalTriggerBinningComponent::AliEMCalTriggerBinningComponent() :
30 TObject(),
31 fDimensions(NULL)
32{
33 /*
34 * Main constructor
35 */
36 fDimensions = new TObjArray;
37 fDimensions->SetOwner();
38}
39
40//______________________________________________________________________________
41AliEMCalTriggerBinningComponent::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//______________________________________________________________________________
57AliEMCalTriggerBinningComponent& 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//______________________________________________________________________________
76AliEMCalTriggerBinningComponent::~AliEMCalTriggerBinningComponent() {
77 /*
78 * Destructor
79 */
80 delete fDimensions;
81}
82
83//______________________________________________________________________________
5b1df951 84AliEMCalTriggerBinningDimension* 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//______________________________________________________________________________
95void 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//______________________________________________________________________________
112void 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