X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliAODCaloCells.cxx;h=a481491a055368453599a6f0862205b3fd38355c;hb=17fd2848ebce9292da187407540f34c2e1dcf047;hp=e268f79d305667c5641c648b1c44f33de8e30290;hpb=8d12277412f3730af49ce49ee7e96020db4fa693;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliAODCaloCells.cxx b/STEER/AliAODCaloCells.cxx index e268f79d305..a481491a055 100644 --- a/STEER/AliAODCaloCells.cxx +++ b/STEER/AliAODCaloCells.cxx @@ -24,14 +24,47 @@ ClassImp(AliAODCaloCells) -AliAODCaloCells::AliAODCaloCells() : TNamed(), fNCells(0), fCellNumber(0), fAmplitude(0), fIsSorted(kTRUE), fType(kUndef) +AliAODCaloCells::AliAODCaloCells() : AliVCaloCells(), fNCells(0), fCellNumber(0), fAmplitude(0), fIsSorted(kTRUE), fType(kUndef) { // default constructor } -AliAODCaloCells::AliAODCaloCells(const char* name, const char* title, AODTwrs_t ttype) : TNamed(name, title), fNCells(0), fCellNumber(0), fAmplitude(0), fIsSorted(kTRUE), fType(ttype) +AliAODCaloCells::AliAODCaloCells(const char* name, const char* title, VCells_t ttype) : + AliVCaloCells(name, title), fNCells(0), fCellNumber(0), fAmplitude(0), fIsSorted(kTRUE), fType(ttype) { - // TNamed constructor + //constructor +} + +AliAODCaloCells::AliAODCaloCells(const AliAODCaloCells& cells) : + AliVCaloCells(cells), + fNCells(cells.fNCells), + fCellNumber(0), + fAmplitude(0), + fIsSorted(cells.fIsSorted), + fType(cells.fType) +{ +// Copy constructor + fCellNumber = new Short_t[fNCells]; + fAmplitude = new Double32_t[fNCells]; + + for (Int_t i = 0; i < fNCells; i++) { + fCellNumber[i] = cells.fCellNumber[i]; + fAmplitude[i] = cells.fAmplitude[i]; + } +} + +AliAODCaloCells& AliAODCaloCells::operator=(const AliAODCaloCells& cells) +{ + // Assignment operator + if(&cells == this) return *this; + fNCells = cells.fNCells; + for (Int_t i = 0; i < fNCells; i++) { + fCellNumber[i] = cells.fCellNumber[i]; + fAmplitude[i] = cells.fAmplitude[i]; + } + SetName(cells.GetName()) ; + SetTitle(cells.GetTitle()) ; + return *this; } AliAODCaloCells::~AliAODCaloCells() @@ -41,6 +74,41 @@ AliAODCaloCells::~AliAODCaloCells() DeleteContainer(); } + +void AliAODCaloCells::Copy(TObject &obj) const { + + // this overwrites the virtual TOBject::Copy() + // to allow run time copying without casting + // in AliESDEvent + + if(this==&obj)return; + AliAODCaloCells *robj = dynamic_cast(&obj); + if(!robj)return; // not an AliAODCaloCells + *robj = *this; + +} + +AliVCaloCells *AliAODCaloCells::CopyCaloCells(Bool_t all = kTRUE) const { + + // copy the calo cells into a new object. If option all=FALSE, just the object type, + // for mixing + + AliVCaloCells *obj = new AliAODCaloCells(); + + if(all){ + obj->SetName (GetName()) ; + obj->SetTitle(GetTitle()) ; + obj->SetType (GetType()) ; + + obj->SetNumberOfCells(fNCells); + for (Short_t i = 0; i < fNCells; i++) + obj->SetCell(i,fCellNumber[i],fAmplitude[i],-1); + } + + return obj; + +} + void AliAODCaloCells::CreateContainer(Short_t nCells) { // function that creates container to store calorimeter cell data @@ -55,7 +123,12 @@ void AliAODCaloCells::CreateContainer(Short_t nCells) fNCells = nCells; fCellNumber = new Short_t[fNCells]; - fAmplitude = new Double32_t[fNCells]; + fAmplitude = new Double32_t[fNCells]; + + // set to zero + for(int i = 0;i=0 && pos < fNCells) { fCellNumber[pos] = cellNumber; - fAmplitude[pos] = amplitude; + fAmplitude[pos] = amplitude; fIsSorted = kFALSE; return kTRUE; } else {