]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/RESONANCES/AliRsnPairFunctions.cxx
Update of package classes.
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnPairFunctions.cxx
CommitLineData
2dab9030 1//
2// *** Class AliRsnPairFunctions ***
3//
4// "Core" method for defining the work on a pari of particles.
5// For one analysis, one must setup one of this for each pair he wants to analyze,
6// adding to it all analysis which he desires to do.
7// Here he defines the cuts, and the particle types and charges, and can add
8// functions which do different operations on the same pair, and some binning
9// with respect to some kinematic variables (eta, momentum)
10//
11// authors: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it)
12// M. Vala (email: martin.vala@cern.ch)
13//
14
15#include <TList.h>
16
17#include "AliLog.h"
18
19#include "AliRsnMother.h"
20#include "AliRsnEvent.h"
21#include "AliRsnFunction.h"
22#include "AliRsnCutSet.h"
2dab9030 23#include "AliRsnValue.h"
24
25#include "AliRsnPairFunctions.h"
26
27ClassImp(AliRsnPairFunctions)
28
29//_____________________________________________________________________________
30AliRsnPairFunctions::AliRsnPairFunctions(const char *name, AliRsnPairDef *def) :
31 AliRsnPair(name, def),
32 fFunctions("AliRsnFunction", 0)
33{
34//
35// Default constructor
36//
37
38 AliDebug(AliLog::kDebug+2,"<-");
39 AliDebug(AliLog::kDebug+2,"->");
40}
41
42//_____________________________________________________________________________
43AliRsnPairFunctions::AliRsnPairFunctions(const AliRsnPairFunctions& copy) :
44 AliRsnPair(copy),
45 fFunctions(copy.fFunctions)
46{
47//
48// Default constructor
49//
50
51 AliDebug(AliLog::kDebug+2,"<-");
52 AliDebug(AliLog::kDebug+2,"->");
53}
54
55//_____________________________________________________________________________
56AliRsnPairFunctions& AliRsnPairFunctions::operator=(const AliRsnPairFunctions& copy)
57{
58 AliRsnPair::operator=(copy);
59
60 Int_t i, n = copy.fFunctions.GetEntries();
61 for (i = 0; i < n; i++)
62 {
63 AliRsnFunction *fcn = (AliRsnFunction*)copy.fFunctions[i];
64 if (fcn) AddFunction(fcn);
65 }
66
67 return (*this);
68}
69
70//_____________________________________________________________________________
71AliRsnPairFunctions::~AliRsnPairFunctions()
72{
73//
74// Destructor
75//
76
77 AliDebug(AliLog::kDebug+2,"<-");
78 AliDebug(AliLog::kDebug+2,"->");
79}
80
81//_____________________________________________________________________________
82void AliRsnPairFunctions::Compute()
83{
84//
85// Makes computations using the two passed daughter objects.
86// Checks all cuts and then computes the corresponding pair object
87// and then fill the list of required values using it.
88//
89
90 AliDebug(AliLog::kDebug+2,"<-");
91
92 TObjArrayIter nextFcn(&fFunctions);
93 AliRsnFunction *fcn = 0x0;
94
95 while ((fcn = (AliRsnFunction*)nextFcn()))
96 {
97 fcn->SetPairDef(fPairDef);
98 fcn->SetPair(&fMother);
99 fcn->SetEvent(fEvent);
100 fcn->Fill();
101 }
102
103 AliDebug(AliLog::kDebug+2,"->");
104}
105
106//_____________________________________________________________________________
107void AliRsnPairFunctions::Init(const char *prefix, TList *list)
108{
109//
110// Generates needed histograms, giving them a name based on
111// the flags defined here, on the pair definition, and attaches
112// a prefix to it, according to the argument.
113//
114// All generated histograms are stored into the output TList.
115//
116
117 AliDebug(AliLog::kDebug+2,"<-");
118
119 Int_t i;
96e9d35d 120 TString hName("");
2dab9030 121 AliRsnFunction *fcn = 0;
122 for (i = 0; i < fFunctions.GetEntries(); i++)
123 {
124 fcn = (AliRsnFunction*)fFunctions.At(i);
96e9d35d 125 hName += prefix;
126 hName += '_';
127 hName += GetName();
128 hName += '_';
129 hName += fcn->GetName();
130 if (fcn->IsUsingTH1()) list->Add(fcn->CreateHistogram(hName.Data(), ""));
131 else list->Add(fcn->CreateHistogramSparse(hName.Data(), ""));
2dab9030 132 }
133
134 AliDebug(AliLog::kDebug+2,"->");
135}
136
137//_____________________________________________________________________________
138void AliRsnPairFunctions::AddFunction(AliRsnFunction *const fcn)
139{
140//
141// Adds a new computing function
142//
143
144 AliDebug(AliLog::kDebug+2,"<-");
145
146 fFunctions.Print();
147 Int_t size = fFunctions.GetEntries();
148 new(fFunctions[size]) AliRsnFunction(*fcn);
149
150 AliDebug(AliLog::kDebug+2,"->");
151}