04-apr-2004 NvE SetMass() invoked from AliTrack::Set3Momentum to get also the energy...
[u/mrichter/AliRoot.git] / RALICE / AliCalmodule.cxx
CommitLineData
4c039060 1/**************************************************************************
2 * Copyright(c) 1998-1999, 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
f531a546 16// $Id$
4c039060 17
959fbac5 18///////////////////////////////////////////////////////////////////////////
19// Class AliCalmodule
20// Description of a module in a calorimeter system.
21// A matrix geometry is assumed, such that a module
22// is identified by (row,col) and contains a certain signal.
23// Note : row and col start counting at 1.
24//
25//--- Author: Nick van Eijndhoven 13-jun-1997 UU-SAP Utrecht
f531a546 26//- Modified: NvE $Date$ UU-SAP Utrecht
959fbac5 27///////////////////////////////////////////////////////////////////////////
28
d88f97cc 29#include "AliCalmodule.h"
c72198f1 30#include "Riostream.h"
d88f97cc 31
32ClassImp(AliCalmodule) // Class implementation to enable ROOT I/O
33
c72198f1 34AliCalmodule::AliCalmodule() : AliSignal()
d88f97cc 35{
36// Default constructor, all module data is set to 0
37 fRow=0;
38 fCol=0;
39 fSigc=0;
d88f97cc 40}
41///////////////////////////////////////////////////////////////////////////
42AliCalmodule::~AliCalmodule()
43{
44// Default destructor
45}
46///////////////////////////////////////////////////////////////////////////
261c0caf 47AliCalmodule::AliCalmodule(const AliCalmodule& m) : AliSignal(m)
c72198f1 48{
49// Copy constructor
50 fRow=m.fRow;
51 fCol=m.fCol;
52 fSigc=m.fSigc;
c72198f1 53}
54///////////////////////////////////////////////////////////////////////////
1c01b4f8 55AliCalmodule::AliCalmodule(Int_t row,Int_t col,Double_t sig) : AliSignal()
d88f97cc 56{
57// Module constructor with initialisation of module data
58 fRow=row;
59 fCol=col;
959fbac5 60 AliSignal::SetSignal(sig);
d88f97cc 61 fSigc=sig;
d88f97cc 62}
63///////////////////////////////////////////////////////////////////////////
64void AliCalmodule::SetRow(Int_t i)
65{
66// Set the row number for this module
67 fRow=i;
68}
69///////////////////////////////////////////////////////////////////////////
70void AliCalmodule::SetColumn(Int_t i)
71{
72// Set the column number for this module
73 fCol=i;
74}
75///////////////////////////////////////////////////////////////////////////
1c01b4f8 76void AliCalmodule::SetSignal(Double_t sig,Int_t j)
d88f97cc 77{
1c01b4f8 78// Set or change the data of the module.
79// This is an extension of AliSignal::SetSignal in view of the clustered signal.
80 AliSignal::SetSignal(sig,j);
81 if (j==1) fSigc=sig;
d88f97cc 82}
83///////////////////////////////////////////////////////////////////////////
1c01b4f8 84void AliCalmodule::AddSignal(Double_t sig,Int_t j)
d88f97cc 85{
86// Add or change the data of the module
1c01b4f8 87// This is an extension of AliSignal::AddSignal in view of the clustered signal.
88 AliSignal::AddSignal(sig,j);
89 if (j==1) fSigc+=sig;
d88f97cc 90}
91///////////////////////////////////////////////////////////////////////////
1c01b4f8 92void AliCalmodule::SetClusteredSignal(Double_t sig)
d88f97cc 93{
94// Set or change the signal of the module after clustering
95 fSigc=sig;
96}
97///////////////////////////////////////////////////////////////////////////
261c0caf 98Int_t AliCalmodule::GetRow() const
d88f97cc 99{
100// Provide the row number of the module
101 return fRow;
102}
103///////////////////////////////////////////////////////////////////////////
261c0caf 104Int_t AliCalmodule::GetColumn() const
d88f97cc 105{
106// Provide the column number of the module
107 return fCol;
108}
109///////////////////////////////////////////////////////////////////////////
261c0caf 110Float_t AliCalmodule::GetClusteredSignal() const
d88f97cc 111{
1fbffa23 112// Provide the signal of the module after clustering.
113 Int_t dead=GetDeadValue();
114 if (!dead)
d88f97cc 115 {
116 return fSigc;
117 }
118 else
119 {
120 return 0;
121 }
122}
123///////////////////////////////////////////////////////////////////////////
261c0caf 124TObject* AliCalmodule::Clone(const char* name) const
c72198f1 125{
1c01b4f8 126// Make a deep copy of the current object and provide the pointer to the copy.
c72198f1 127// This memberfunction enables automatic creation of new objects of the
1c01b4f8 128// correct type depending on the object type, a feature which may be very useful
c72198f1 129// for containers like AliCalorimeter when adding objects in case the
130// container owns the objects. This feature allows e.g. AliCalorimeter
131// to store either AliCalmodule objects or objects derived from AliCalmodule
132// via tha AddSignal memberfunction, provided these derived classes also have
1c01b4f8 133// a proper Clone memberfunction.
c72198f1 134
1c01b4f8 135 AliCalmodule* m=new AliCalmodule(*this);
136 if (name)
137 {
138 if (strlen(name)) m->SetName(name);
139 }
140 return m;
c72198f1 141}
142///////////////////////////////////////////////////////////////////////////