#include "AliESDEvent.h"
#include "AliESDMuonCluster.h"
#include "AliESDMuonPad.h"
#include "AliLog.h"
#include <TClonesArray.h>
#include <Riostream.h>
using std::endl;
using std::cout;
ClassImp(AliESDMuonCluster)
AliESDMuonCluster::AliESDMuonCluster()
: TObject(),
fCharge(0.),
fChi2(0.),
fPads(0x0),
fNPads(0),
fPadsId(0x0),
fLabel(-1)
{
fXYZ[0] = fXYZ[1] = fXYZ[2] = 0.;
fErrXY[0] = fErrXY[1] = 0.;
}
AliESDMuonCluster::AliESDMuonCluster (const AliESDMuonCluster& cluster)
: TObject(cluster),
fCharge(cluster.fCharge),
fChi2(cluster.fChi2),
fPads(0x0),
fNPads(cluster.fNPads),
fPadsId(0x0),
fLabel(cluster.fLabel)
{
fXYZ[0] = cluster.fXYZ[0];
fXYZ[1] = cluster.fXYZ[1];
fXYZ[2] = cluster.fXYZ[2];
fErrXY[0] = cluster.fErrXY[0];
fErrXY[1] = cluster.fErrXY[1];
if (cluster.fPads) {
fPads = new TClonesArray("AliESDMuonPad",cluster.fPads->GetEntriesFast());
AliESDMuonPad *pad = (AliESDMuonPad*) cluster.fPads->First();
while (pad) {
new ((*fPads)[fPads->GetEntriesFast()]) AliESDMuonPad(*pad);
pad = (AliESDMuonPad*) cluster.fPads->After(pad);
}
}
if (cluster.fPadsId) fPadsId = new TArrayI(*(cluster.fPadsId));
}
AliESDMuonCluster& AliESDMuonCluster::operator=(const AliESDMuonCluster& cluster)
{
if (this == &cluster) return *this;
TObject::operator=(cluster);
fXYZ[0] = cluster.fXYZ[0];
fXYZ[1] = cluster.fXYZ[1];
fXYZ[2] = cluster.fXYZ[2];
fErrXY[0] = cluster.fErrXY[0];
fErrXY[1] = cluster.fErrXY[1];
fCharge = cluster.fCharge;
fChi2 = cluster.fChi2;
fLabel = cluster.fLabel;
delete fPads;
if (cluster.fPads) {
fPads = new TClonesArray("AliESDMuonPad",cluster.fPads->GetEntriesFast());
AliESDMuonPad *pad = (AliESDMuonPad*) cluster.fPads->First();
while (pad) {
new ((*fPads)[fPads->GetEntriesFast()]) AliESDMuonPad(*pad);
pad = (AliESDMuonPad*) cluster.fPads->After(pad);
}
} else fPads = 0x0;
SetPadsId(cluster.fNPads, cluster.GetPadsId());
return *this;
}
void AliESDMuonCluster::Copy(TObject &obj) const {
if(this==&obj)return;
AliESDMuonCluster *robj = dynamic_cast<AliESDMuonCluster*>(&obj);
if(!robj)return;
*robj = *this;
}
AliESDMuonCluster::~AliESDMuonCluster()
{
delete fPads;
delete fPadsId;
}
void AliESDMuonCluster::Clear(Option_t* opt)
{
if (opt && opt[0] == 'C') {
if (fPads) fPads->Clear("C");
} else {
delete fPads; fPads = 0x0;
}
delete fPadsId; fPadsId = 0x0;
fNPads = 0;
}
void AliESDMuonCluster::AddPadId(UInt_t padId)
{
if (!fPadsId) fPadsId = new TArrayI(10);
if (fPadsId->GetSize() <= fNPads) fPadsId->Set(fNPads+10);
fPadsId->AddAt(static_cast<Int_t>(padId), fNPads++);
}
void AliESDMuonCluster::SetPadsId(Int_t nPads, const UInt_t *padsId)
{
if (nPads <= 0 || !padsId) {
delete fPadsId;
fPadsId = 0x0;
fNPads = 0;
return;
}
if (!fPadsId) fPadsId = new TArrayI(nPads, reinterpret_cast<const Int_t*>(padsId));
else fPadsId->Set(nPads, reinterpret_cast<const Int_t*>(padsId));
fNPads = nPads;
}
void AliESDMuonCluster::MovePadsToESD(AliESDEvent &esd)
{
if (!fPads) return;
for (Int_t i = 0; i < fPads->GetEntriesFast(); i++) {
AliESDMuonPad *pad = static_cast<AliESDMuonPad*>(fPads->UncheckedAt(i));
AliESDMuonPad *newPad = esd.NewMuonPad();
*newPad = *pad;
AddPadId(newPad->GetUniqueID());
}
delete fPads;
fPads = 0x0;
}
void AliESDMuonCluster::Print(Option_t *) const
{
UInt_t cId = GetUniqueID();
cout<<Form("clusterID=%u (ch=%d, det=%d, index=%d)",
cId,GetChamberId(),GetDetElemId(),GetClusterIndex())<<endl;
cout<<Form(" position=(%5.2f, %5.2f, %5.2f), sigma=(%5.2f, %5.2f, 0.0)",
GetX(),GetY(),GetZ(),GetErrX(),GetErrY())<<endl;
cout<<Form(" charge=%5.2f, chi2=%5.2f, MClabel=%d", GetCharge(), GetChi2(), GetLabel())<<endl;
if (PadsStored()) {
cout<<" pad infos:"<<endl;
for (Int_t iPad=0; iPad<GetNPads(); iPad++) cout<<" "<<GetPadId(iPad)<<endl;
}
}
AliESDMuonCluster.cxx:100 AliESDMuonCluster.cxx:101 AliESDMuonCluster.cxx:102 AliESDMuonCluster.cxx:103 AliESDMuonCluster.cxx:104 AliESDMuonCluster.cxx:105 AliESDMuonCluster.cxx:106 AliESDMuonCluster.cxx:107 AliESDMuonCluster.cxx:108 AliESDMuonCluster.cxx:109 AliESDMuonCluster.cxx:110 AliESDMuonCluster.cxx:111 AliESDMuonCluster.cxx:112 AliESDMuonCluster.cxx:113 AliESDMuonCluster.cxx:114 AliESDMuonCluster.cxx:115 AliESDMuonCluster.cxx:116 AliESDMuonCluster.cxx:117 AliESDMuonCluster.cxx:118 AliESDMuonCluster.cxx:119 AliESDMuonCluster.cxx:120 AliESDMuonCluster.cxx:121 AliESDMuonCluster.cxx:122 AliESDMuonCluster.cxx:123 AliESDMuonCluster.cxx:124 AliESDMuonCluster.cxx:125 AliESDMuonCluster.cxx:126 AliESDMuonCluster.cxx:127 AliESDMuonCluster.cxx:128 AliESDMuonCluster.cxx:129 AliESDMuonCluster.cxx:130 AliESDMuonCluster.cxx:131 AliESDMuonCluster.cxx:132 AliESDMuonCluster.cxx:133 AliESDMuonCluster.cxx:134 AliESDMuonCluster.cxx:135 AliESDMuonCluster.cxx:136 AliESDMuonCluster.cxx:137 AliESDMuonCluster.cxx:138 AliESDMuonCluster.cxx:139 AliESDMuonCluster.cxx:140 AliESDMuonCluster.cxx:141 AliESDMuonCluster.cxx:142 AliESDMuonCluster.cxx:143 AliESDMuonCluster.cxx:144 AliESDMuonCluster.cxx:145 AliESDMuonCluster.cxx:146 AliESDMuonCluster.cxx:147 AliESDMuonCluster.cxx:148 AliESDMuonCluster.cxx:149 AliESDMuonCluster.cxx:150 AliESDMuonCluster.cxx:151 AliESDMuonCluster.cxx:152 AliESDMuonCluster.cxx:153 AliESDMuonCluster.cxx:154 AliESDMuonCluster.cxx:155 AliESDMuonCluster.cxx:156 AliESDMuonCluster.cxx:157 AliESDMuonCluster.cxx:158 AliESDMuonCluster.cxx:159 AliESDMuonCluster.cxx:160 AliESDMuonCluster.cxx:161 AliESDMuonCluster.cxx:162 AliESDMuonCluster.cxx:163 AliESDMuonCluster.cxx:164 AliESDMuonCluster.cxx:165 AliESDMuonCluster.cxx:166 AliESDMuonCluster.cxx:167 AliESDMuonCluster.cxx:168 AliESDMuonCluster.cxx:169 AliESDMuonCluster.cxx:170 AliESDMuonCluster.cxx:171 AliESDMuonCluster.cxx:172 AliESDMuonCluster.cxx:173 AliESDMuonCluster.cxx:174 AliESDMuonCluster.cxx:175 AliESDMuonCluster.cxx:176 AliESDMuonCluster.cxx:177 AliESDMuonCluster.cxx:178 AliESDMuonCluster.cxx:179 AliESDMuonCluster.cxx:180 AliESDMuonCluster.cxx:181 AliESDMuonCluster.cxx:182 AliESDMuonCluster.cxx:183 AliESDMuonCluster.cxx:184 AliESDMuonCluster.cxx:185 AliESDMuonCluster.cxx:186 AliESDMuonCluster.cxx:187 AliESDMuonCluster.cxx:188 AliESDMuonCluster.cxx:189 AliESDMuonCluster.cxx:190 AliESDMuonCluster.cxx:191 AliESDMuonCluster.cxx:192 AliESDMuonCluster.cxx:193 AliESDMuonCluster.cxx:194 AliESDMuonCluster.cxx:195 AliESDMuonCluster.cxx:196 AliESDMuonCluster.cxx:197 AliESDMuonCluster.cxx:198 AliESDMuonCluster.cxx:199 AliESDMuonCluster.cxx:200 AliESDMuonCluster.cxx:201 AliESDMuonCluster.cxx:202 AliESDMuonCluster.cxx:203 AliESDMuonCluster.cxx:204 AliESDMuonCluster.cxx:205 AliESDMuonCluster.cxx:206 AliESDMuonCluster.cxx:207 AliESDMuonCluster.cxx:208 AliESDMuonCluster.cxx:209 AliESDMuonCluster.cxx:210 AliESDMuonCluster.cxx:211 AliESDMuonCluster.cxx:212 AliESDMuonCluster.cxx:213 AliESDMuonCluster.cxx:214