X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSModuleDaSSD.cxx;h=2b3efb489bf77690d0e391d22d78ac4ee6ff10b9;hb=6173301f31f5c69c4cc8cddc1769ca14c311f80c;hp=72e5da0685bd23a77912709e16775fe20e59255f;hpb=ced4d9bc2334c5418dc20411d73522eaa5efd350;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSModuleDaSSD.cxx b/ITS/AliITSModuleDaSSD.cxx index 72e5da0685b..2b3efb489bf 100644 --- a/ITS/AliITSModuleDaSSD.cxx +++ b/ITS/AliITSModuleDaSSD.cxx @@ -19,7 +19,8 @@ /// /// This class provides storage container ITS SSD module callibration data /// used by DA. -/// +/// +/// Date: 09/07/2009 /////////////////////////////////////////////////////////////////////////////// #include "AliITSNoiseSSD.h" @@ -109,11 +110,6 @@ AliITSModuleDaSSD::AliITSModuleDaSSD(const Int_t numberofstrips) : fNumberOfStrips = 0; fStrips = NULL; } - fCmFerom = new (nothrow) TArrayS [fgkChipsPerModule]; - if (!fCmFerom) { - AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayS objects!", fgkChipsPerModule)); - fCmFerom = NULL; - } } @@ -148,17 +144,6 @@ AliITSModuleDaSSD::AliITSModuleDaSSD(const Int_t numberofstrips, const Long_t ev fNumberOfStrips = 0; fStrips = NULL; } - fCmFerom = new (nothrow) TArrayS [fgkChipsPerModule]; - if (fCmFerom) { - for (Int_t i = 0; i < fgkChipsPerModule; i++) { - fCmFerom[i].Set(eventsnumber); - fCmFerom[i].Reset(0); - } - } - else { - AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayS objects!", fgkChipsPerModule)); - fCmFerom = NULL; - } } @@ -220,7 +205,7 @@ AliITSModuleDaSSD::AliITSModuleDaSSD(const AliITSModuleDaSSD& module) : AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayS objects!", fgkChipsPerModule)); fCmFerom = NULL; } - } + } } @@ -230,9 +215,11 @@ AliITSModuleDaSSD& AliITSModuleDaSSD::operator = (const AliITSModuleDaSSD& modul { // assignment operator if (this == &module) return *this; + TObject::operator=(module); if (fStrips) { for (Long_t i = 0; i < fNumberOfStrips; i++) if (fStrips[i]) delete fStrips[i]; delete [] fStrips; + fStrips = NULL; } fEquipId = module.fEquipId; fEquipType = module.fEquipType; @@ -240,7 +227,6 @@ AliITSModuleDaSSD& AliITSModuleDaSSD::operator = (const AliITSModuleDaSSD& modul fAd = module.fAd; fAdc = module.fAdc; fModuleId = module.fModuleId; - fNumberOfStrips = module.fNumberOfStrips; fStrips = NULL; fNumberOfChips = module.fNumberOfChips; fCm = NULL; @@ -248,18 +234,21 @@ AliITSModuleDaSSD& AliITSModuleDaSSD::operator = (const AliITSModuleDaSSD& modul if ((module.fNumberOfStrips > 0) && (module.fStrips)) { fStrips = new (nothrow) AliITSChannelDaSSD* [module.fNumberOfStrips]; if (fStrips) { + memset(fStrips, 0, (sizeof(AliITSChannelDaSSD*) * module.fNumberOfStrips)); for (Int_t strind = 0; strind < module.fNumberOfStrips; strind++) { if (module.fStrips[strind]) { - fStrips[strind] = new AliITSChannelDaSSD(*(module.fStrips[strind])); - if (!fStrips[strind]) { - AliError("AliITSModuleDaSSD: Error copy constructor"); + fStrips[strind] = new AliITSChannelDaSSD(*(module.fStrips[strind])); + if (!fStrips[strind]) { + AliError("AliITSModuleDaSSD: Error copy constructor"); for (Int_t i = (strind - 1); i >= 0; i--) delete fStrips[strind]; - delete [] fStrips; - fStrips = NULL; - break; - } - } else fStrips[strind] = NULL; - } + delete [] fStrips; + fStrips = NULL; + fNumberOfStrips = 0; + break; + } + } else fStrips[strind] = NULL; + } + fNumberOfStrips = module.fNumberOfStrips; } else { AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i AliITSChannelDaSSD* objects!", module.fNumberOfStrips)); fNumberOfStrips = 0; @@ -277,7 +266,7 @@ AliITSModuleDaSSD& AliITSModuleDaSSD::operator = (const AliITSModuleDaSSD& modul fCm = NULL; } } - if (fCmFerom) delete [] fCmFerom; + if (fCmFerom) { delete [] fCmFerom; fCmFerom = NULL; } if (module.fCmFerom) { fCmFerom = new (nothrow) TArrayS [module.fNumberOfChips]; if (fCmFerom) { @@ -403,14 +392,14 @@ Bool_t AliITSModuleDaSSD::SetEventsNumber(const Long_t eventsnumber) Int_t i; if (!fStrips) return kFALSE; for (i = 0; i < fNumberOfStrips; i++) { - if (fStrips[i]) + if (fStrips[i]) { if (!fStrips[i]->SetEvenetsNumber(eventsnumber)) { for (Int_t j = 0; j < i; j++) fStrips[j]->DeleteSignal(); - AliError(Form("AliITSModuleDaSSD: Error allocating memory for i% events for module %i, strip %i", - eventsnumber, (Int_t)fModuleId, i)); + AliError(Form("AliITSModuleDaSSD: Error allocating memory for %ld event for module %d, strip %d",eventsnumber, (Int_t)fModuleId, i)); return kFALSE; } - else + } + else { if (!(fStrips[i] = new AliITSChannelDaSSD(i, eventsnumber))) { for (Int_t j = 0; j < i; j++) delete fStrips[j]; delete [] fStrips; @@ -419,14 +408,8 @@ Bool_t AliITSModuleDaSSD::SetEventsNumber(const Long_t eventsnumber) AliError(Form("AliITSModuleDaSSD: Error allocating memory for strip %i of module %i!", (Int_t)fModuleId, i)); return kFALSE; } - } - if (fCmFerom) { - for (Int_t ie = 0; ie < fgkChipsPerModule; ie++) { - fCmFerom[ie].Set(eventsnumber); - fCmFerom[ie].Reset(0); - } + } } - else AliError("AliITSModuleDaSSD: No memory was allocated for fCmFerom!"); fEventsNumber = eventsnumber; return kTRUE; } @@ -455,6 +438,21 @@ Float_t AliITSModuleDaSSD::GetCM(const Int_t chipn, const Long_t evn) const } +//______________________________________________________________________________ +Bool_t AliITSModuleDaSSD::AllocateCMFeromArray(void) +{ +// Allocates memory for the channels which contains CM calculated in Ferom + if (!fCmFerom) { + fCmFerom = new (nothrow) TArrayS [fgkChipsPerModule]; + if (!fCmFerom) { + AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayS objects!", fgkChipsPerModule)); + fCmFerom = NULL; + return kFALSE; + } + } + return kTRUE; +} + //______________________________________________________________________________ Bool_t AliITSModuleDaSSD::SetCMFeromEventsNumber(const Long_t eventsnumber) @@ -479,6 +477,14 @@ Bool_t AliITSModuleDaSSD::SetCMFerom (const Short_t cm, const Int_t chipn, const } +void AliITSModuleDaSSD::SetCMFerom (Short_t* cm, const Int_t chipn) +// Set value of FeromCM for a given chip +{ + if (!fCmFerom) + if (!AllocateCMFeromArray()) return; + if (chipn < fgkChipsPerModule) fCmFerom[chipn].Set(fCmFerom[chipn].GetSize(), cm); +} + //______________________________________________________________________________ Short_t AliITSModuleDaSSD::GetCMFerom(const Int_t chipn, const Long_t evn) const @@ -489,87 +495,3 @@ Short_t AliITSModuleDaSSD::GetCMFerom(const Int_t chipn, const Long_t evn) co else return fCmFerom[chipn][evn]; } - - -//______________________________________________________________________________ -AliITSNoiseSSD* AliITSModuleDaSSD::GetCalibrationNoise() const -{ -// Creates the AliITSNoiseSSD objects with callibration data - AliITSNoiseSSD *mc; - // Float_t noise; - if (!fStrips) return NULL; - mc = new AliITSNoiseSSD(); - - /* - mc->SetMod(fModuleId); - mc->SetNNoiseP(fgkPNStripsPerModule); - mc->SetNNoiseN(fgkPNStripsPerModule); - for (Int_t i = 0; i < fNumberOfStrips; i++) { - if (!fStrips[i]) noise = AliITSChannelDaSSD::GetUndefinedValue(); - else noise = fStrips[i]->GetNoiseCM(); - if (i < fgkPNStripsPerModule) - mc->AddNoiseP(i, noise); - else mc->AddNoiseN((AliITSChannelDaSSD::GetMaxStripIdConst() - i), noise); - } - */ - - return mc; -} - - - -//______________________________________________________________________________ -AliITSPedestalSSD* AliITSModuleDaSSD::GetCalibrationPedestal() const -{ -// Creates the AliITSPedestalSSD objects with callibration data - AliITSPedestalSSD *mc; - // Float_t ped; - if (!fStrips) return NULL; - mc = new AliITSPedestalSSD(); - - /* - mc->SetMod(fModuleId); - mc->SetNPedestalP(fgkPNStripsPerModule); - mc->SetNPedestalN(fgkPNStripsPerModule); - for (Int_t i = 0; i < fNumberOfStrips; i++) { - if (!fStrips[i]) ped = AliITSChannelDaSSD::GetUndefinedValue(); - else ped = fStrips[i]->GetPedestal(); - if (i < fgkPNStripsPerModule) - mc->AddPedestalP(i, ped); - else mc->AddPedestalN((AliITSChannelDaSSD::GetMaxStripIdConst() - i), ped); - } - */ - - return mc; -} - - - -//______________________________________________________________________________ -AliITSBadChannelsSSD* AliITSModuleDaSSD::GetCalibrationBadChannels() const -{ -// Creates the AliITSBadChannelsSSD objects with callibration data - AliITSBadChannelsSSD *mc; - Int_t *chlist, nch = 0, nchn = 0, nchp = 0; - if (!fStrips) return NULL; - chlist = new Int_t [GetStripsPerModuleConst()]; - for (Int_t i = 0; i < fNumberOfStrips; i++) { - if (!fStrips[i]) { chlist[nch++] = i; if (i < fgkPNStripsPerModule) nchp++; else nchn++; continue;} - if (fStrips[i]->GetNoiseCM() == AliITSChannelDaSSD::GetUndefinedValue()) - { chlist[nch++] = i; if (i < fgkPNStripsPerModule) nchp++; else nchn++; } - } - mc = new AliITSBadChannelsSSD(); - - /* - mc->SetMod(fModuleId); - if (!nch) return mc; - mc->SetNBadPChannelsList(nchp); - mc->SetNBadNChannelsList(nchn); - for (Int_t i = 0; i < nch; i++) { - if (chlist[i] < fgkPNStripsPerModule) mc->AddBadPChannel(chlist[i], i); - else mc->AddBadNChannel((AliITSChannelDaSSD::GetMaxStripIdConst() - chlist[i]), (i-nchp)); - } - */ - - return mc; -}