* provided "as is" without express or implied warranty. *
**************************************************************************/
-/* $Id$ */
+/* $Id:$ */
///////////////////////////////////////////////////////////////////////////////
///
///////////////////////////////////////////////////////////////////////////////
#include "AliITSNoiseSSD.h"
+#include "AliITSPedestalSSD.h"
+#include "AliITSBadChannelsSSD.h"
#include "AliITSModuleDaSSD.h"
#include "TString.h"
#include "AliLog.h"
fAdc(module.fAdc),
fModuleId(module.fModuleId),
fNumberOfStrips(module.fNumberOfStrips),
- fStrips(module.fStrips),
+ fStrips(NULL),
fNumberOfChips(module.fNumberOfChips),
- fCm(module.fCm),
+ fCm(NULL),
fEventsNumber(module.fEventsNumber)
{
// copy constructor
-
- AliFatal("AliITSModuleDaSSD, copy constructor not implemented");
+ if ((module.fNumberOfStrips > 0) && (module.fStrips)) {
+ fStrips = new (nothrow) AliITSChannelDaSSD* [module.fNumberOfStrips];
+ if (fStrips) {
+ 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");
+ for (Int_t i = (strind - 1); i >= 0; i--) delete fStrips[strind];
+ delete [] fStrips;
+ fStrips = NULL;
+ break;
+ }
+ } else fStrips[strind] = NULL;
+ }
+ } else {
+ AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i AliITSChannelDaSSD* objects!", module.fNumberOfStrips));
+ fNumberOfStrips = 0;
+ fStrips = NULL;
+ }
+ }
+ if (module.fCm) {
+ fCm = new (nothrow) TArrayF [module.fNumberOfChips];
+ if (fCm) {
+ for (Int_t chind = 0; chind < module.fNumberOfChips; chind++) fCm[chind] = module.fCm[chind];
+ } else {
+ AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayF objects!", module.fNumberOfChips));
+ fNumberOfChips = 0;
+ fCm = NULL;
+ }
+ }
}
AliITSModuleDaSSD& AliITSModuleDaSSD::operator = (const AliITSModuleDaSSD& module)
{
// assignment operator
-
- AliFatal("AliITSModuleDaSSD: operator =, assignment operator not implemented");
+ if (this == &module) return *this;
+ if (fStrips) {
+ for (Long_t i = 0; i < fNumberOfStrips; i++) if (fStrips[i]) delete fStrips[i];
+ delete [] fStrips;
+ }
+ fEquipId = module.fEquipId;
+ fEquipType = module.fEquipType;
+ fDdlId = module.fDdlId;
+ fAd = module.fAd;
+ fAdc = module.fAdc;
+ fModuleId = module.fModuleId;
+ fNumberOfStrips = module.fNumberOfStrips;
+ fStrips = NULL;
+ fNumberOfChips = module.fNumberOfChips;
+ fCm = NULL;
+ fEventsNumber = module.fEventsNumber;
+ if ((module.fNumberOfStrips > 0) && (module.fStrips)) {
+ fStrips = new (nothrow) AliITSChannelDaSSD* [module.fNumberOfStrips];
+ if (fStrips) {
+ 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");
+ for (Int_t i = (strind - 1); i >= 0; i--) delete fStrips[strind];
+ delete [] fStrips;
+ fStrips = NULL;
+ break;
+ }
+ } else fStrips[strind] = NULL;
+ }
+ } else {
+ AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i AliITSChannelDaSSD* objects!", module.fNumberOfStrips));
+ fNumberOfStrips = 0;
+ fStrips = NULL;
+ }
+ }
+ if (fCm) delete [] fCm;
+ if (module.fCm) {
+ fCm = new (nothrow) TArrayF [module.fNumberOfChips];
+ if (fCm) {
+ for (Int_t chind = 0; chind < module.fNumberOfChips; chind++) fCm[chind] = module.fCm[chind];
+ } else {
+ AliError(Form("AliITSModuleDaSSD: Error allocating memory for %i TArrayF objects!", module.fNumberOfChips));
+ fNumberOfChips = 0;
+ fCm = NULL;
+ }
+ }
return *this;
}
//______________________________________________________________________________
-AliITSNoiseSSD* AliITSModuleDaSSD::GetCalibrationSSDModule() const
+AliITSNoiseSSD* AliITSModuleDaSSD::GetCalibrationNoise() const
{
// Creates the AliITSNoiseSSD objects with callibration data
AliITSNoiseSSD *mc;
}
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;
+}