///
/// This class provides storage container ITS SSD module callibration data
/// used by DA.
-///
+///
+/// Date: 09/07/2009
///////////////////////////////////////////////////////////////////////////////
#include "AliITSNoiseSSD.h"
fNumberOfStrips = 0;
fStrips = NULL;
}
- fCmFerom = new (nothrow) TArrayS [fgkChipsPerModule];
- if (!fCmFerom) {
- AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayS objects!", fgkChipsPerModule));
- fCmFerom = NULL;
- }
}
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;
- }
}
AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayS objects!", fgkChipsPerModule));
fCmFerom = NULL;
}
- }
+ }
}
{
// 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;
fAd = module.fAd;
fAdc = module.fAdc;
fModuleId = module.fModuleId;
- fNumberOfStrips = module.fNumberOfStrips;
fStrips = NULL;
fNumberOfChips = module.fNumberOfChips;
fCm = NULL;
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;
fCm = NULL;
}
}
- if (fCmFerom) delete [] fCmFerom;
+ if (fCmFerom) { delete [] fCmFerom; fCmFerom = NULL; }
if (module.fCmFerom) {
fCmFerom = new (nothrow) TArrayS [module.fNumberOfChips];
if (fCmFerom) {
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;
AliError(Form("AliITSModuleDaSSD: Error allocating memory for strip %i of module %i!", (Int_t)fModuleId, i));
return kFALSE;
}
- }
- if (fCmFerom) {
- for (Int_t i = 0; i < fgkChipsPerModule; i++) {
- fCmFerom[i].Set(eventsnumber);
- fCmFerom[i].Reset(0);
- }
+ }
}
- else AliError("AliITSModuleDaSSD: No memory was allocated for fCmFerom!");
fEventsNumber = eventsnumber;
return kTRUE;
}
}
+//______________________________________________________________________________
+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)
}
+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
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;
-}