#include <TObject.h>
#include <TString.h>
+#include "AliLog.h"
#include "AliITSresponse.h"
+#include "AliITSMapSDD.h"
class AliITSsegmentation;
class TF1;
virtual void GetNoiseParam(Double_t&, Double_t&) const = 0;
virtual void SetThresholds(Double_t, Double_t) = 0;
virtual void Thresholds(Double_t &, Double_t &) const = 0;
+ virtual void SetMapA(Int_t, AliITSMapSDD*) {AliError("This method must be implemented in a derived class");}
+ virtual void SetMapT(Int_t, AliITSMapSDD*) {AliError("This method must be implemented in a derived class");}
virtual Double_t DriftSpeed() const {return SpeedElectron();};
// Set sigmas of the charge spread function
virtual void SetSigmaSpread(Double_t, Double_t) = 0;
fDeadChannels(0),
fMinVal(fgkMinValDefault),
fIsDead(kFALSE),
-fBadChannels()
+fBadChannels(),
+fMapAW0(0),
+fMapAW1(0),
+fMapTW0(0),
+fMapTW1(0)
{
// default constructor
SetThresholds(fgkMinValDefault,0.);
SetTemperature(fgkTemperatureDefault);
SetDataType();
- for(Int_t i=0;i<fgkChips*fgkChannels;i++){
+ /* for(Int_t i=0;i<fgkChips*fgkChannels;i++){
for(Int_t j=0;j<fgkMapTimeNBin;j++){
fMapA[i][j]=0;
fMapT[i][j]=0;
}
}
+ */
}
//______________________________________________________________________
AliITSCalibrationSDD::AliITSCalibrationSDD(const char *dataType):
fDeadChannels(0),
fMinVal(fgkMinValDefault),
fIsDead(kFALSE),
-fBadChannels(){
+fBadChannels(),
+fMapAW0(0),
+fMapAW1(0),
+fMapTW0(0),
+fMapTW1(0){
// constructor
SetDeadChannels();
SetThresholds(fgkMinValDefault,0.);
SetTemperature(fgkTemperatureDefault);
SetDataType(dataType);
- for(Int_t i=0;i<fgkChips*fgkChannels;i++){
+ /*for(Int_t i=0;i<fgkChips*fgkChannels;i++){
for(Int_t j=0;j<fgkMapTimeNBin;j++){
fMapA[i][j]=0;
fMapT[i][j]=0;
}
}
-
+ */
}
+//_____________________________________________________________________
+AliITSCalibrationSDD::~AliITSCalibrationSDD(){
+ //destructor
+ if(fMapAW0) delete fMapAW0;
+ if(fMapAW1) delete fMapAW1;
+ if(fMapTW0) delete fMapTW0;
+ if(fMapTW1) delete fMapTW1;
+
+}
//______________________________________________________________________
void AliITSCalibrationSDD::GiveCompressParam(Int_t cp[8],Int_t ian) const {
#include "AliITSresponseSDD.h"
#include "TArrayI.h"
+class AliITSMapSDD;
class AliITSresponseSDD;
///////////////////////////////////////////////////////
// Response for SDD //
//
AliITSCalibrationSDD();
AliITSCalibrationSDD(const char *dataType);
- virtual ~AliITSCalibrationSDD() {;}
+ virtual ~AliITSCalibrationSDD();
virtual void SetNoiseParam(Double_t /*n*/, Double_t /*b*/){
NotImplemented("SetNoiseParam");}
Int_t GetBadChannel(Int_t i) const {return fBadChannels[i];}
Bool_t IsBadChannel(Int_t anode);
- Float_t GetMapACell(Int_t i,Int_t j) const {return fMapA[i][j];}
- virtual void SetMapACell(Int_t i,Int_t j,Float_t dev) {fMapA[i][j]=dev;}
- Float_t GetMapTCell(Int_t i,Int_t j) const {return fMapT[i][j];}
- virtual void SetMapTCell(Int_t i,Int_t j,Float_t dev) {fMapT[i][j]=dev;}
+ Float_t GetMapACell(Int_t i,Int_t j) const {
+ if(i<256) return fMapAW0->GetCellContent(i,j);
+ else return fMapAW1->GetCellContent(i,j);
+ }
+ virtual void SetMapA(Int_t wing,AliITSMapSDD* mapA) {
+ if(wing==0) fMapAW0=mapA;
+ else fMapAW1=mapA;
+ }
+ Float_t GetMapTCell(Int_t i,Int_t j) const {
+ if(i<256) return fMapTW0->GetCellContent(i,j);
+ else return fMapTW1->GetCellContent(i,j);
+ }
+ virtual void SetMapT(Int_t wing,AliITSMapSDD* mapT) {
+ if(wing==0) fMapTW0=mapT;
+ else fMapTW1=mapT;
+ }
static Int_t GetMapTimeNBin() {return fgkMapTimeNBin;}
virtual void SetElectronics(Int_t p1=1) {((AliITSresponseSDD*)fResponse)->SetElectronics(p1);}
Bool_t fIsDead; // module is dead or alive ?
TArrayI fBadChannels; //Array with bad anodes number (0-512)
- Float_t fMapA[fgkChips*fgkChannels][fgkMapTimeNBin]; //array with deviations on anode coordinate
- Float_t fMapT[fgkChips*fgkChannels][fgkMapTimeNBin]; //array with deviations on time coordinate
+ //Float_t fMapA[fgkChips*fgkChannels][fgkMapTimeNBin]; //array with deviations on anode coordinate
+ //Float_t fMapT[fgkChips*fgkChannels][fgkMapTimeNBin]; //array with deviations on time coordinate
+ AliITSMapSDD* fMapAW0; //! map of residuals on anode coord. wing 0
+ AliITSMapSDD* fMapAW1; //! map of residuals on anode coord. wing 1
+ AliITSMapSDD* fMapTW0; //! map of residuals on time coord. wing 0
+ AliITSMapSDD* fMapTW1; //! map of residuals on time coord. wing 1
+
private:
AliITSCalibrationSDD(const AliITSCalibrationSDD &ob); // copy constructor
AliITSCalibrationSDD& operator=(const AliITSCalibrationSDD & /* source */); // ass. op.
- ClassDef(AliITSCalibrationSDD,5) // SDD response
+ ClassDef(AliITSCalibrationSDD,6) // SDD response
};
#endif
#include "AliITSRawClusterSSD.h"
#include "AliITSRecPoint.h"
#include "AliITSCalibrationSDD.h"
+#include "AliITSMapSDD.h"
#include "AliITSCalibrationSSD.h"
#include "AliITSNoiseSSD.h"
#include "AliITSGainSSD.h"
AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD");
AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD");
AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD");
+ AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD");
+ AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD");
if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD ||
- !entry2SPD || !entry2SDD || !entry2SSD){
+ !entry2SPD || !entry2SDD || !entry2SSD || !mapASDD || !mapTSDD){
AliFatal("Calibration object retrieval failed! ");
return kFALSE;
}
if(!cacheStatus)entry2SDD->SetObject(NULL);
entry2SDD->SetOwner(kTRUE);
+ TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
+ if(!cacheStatus)mapASDD->SetObject(NULL);
+ mapASDD->SetOwner(kTRUE);
+
+ TObjArray *mapT = (TObjArray *)mapTSDD->GetObject();
+ if(!cacheStatus)mapTSDD->SetObject(NULL);
+ mapTSDD->SetOwner(kTRUE);
+
TObjArray *noiseSSD = (TObjArray *)entryNoiseSSD->GetObject();
if(!cacheStatus)entryNoiseSSD->SetObject(NULL);
entryNoiseSSD->SetOwner(kTRUE);
delete entry2SPD;
delete entry2SDD;
delete entry2SSD;
+ delete mapASDD;
+ delete mapTSDD;
}
if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD)
- || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
+ || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
AliWarning("Can not get calibration from calibration database !");
return kFALSE;
}
cal = (AliITSCalibration*) calSPD->At(i);
cal->SetResponse((AliITSresponse*)pSPD);
SetCalibrationModel(i, cal);
- }
+ }
+ Int_t nn1=0;
+ Int_t nn2=0;
for (Int_t i=0; i<fNMod[1]; i++) {
cal = (AliITSCalibration*) calSDD->At(i);
cal->SetResponse((AliITSresponse*)pSDD);
+ AliITSMapSDD* m1 = (AliITSMapSDD*)mapAn->At(nn1);nn1++;
+ AliITSMapSDD* m2 = (AliITSMapSDD*)mapAn->At(nn1);nn1++;
+ AliITSMapSDD* m3 = (AliITSMapSDD*)mapT->At(nn2);nn2++;
+ AliITSMapSDD* m4 = (AliITSMapSDD*)mapT->At(nn2);nn2++;
+ cal->SetMapA(0,m1);
+ cal->SetMapA(1,m2);
+ cal->SetMapT(0,m3);
+ cal->SetMapT(1,m4);
Int_t iMod = i + fNMod[0];
SetCalibrationModel(iMod, cal);
- }
+ }
for (Int_t i=0; i<fNMod[2]; i++) {
AliITSCalibrationSSD *calibSSD = new AliITSCalibrationSSD();
#include "AliITSpListItem.h"
#include "AliITSresponseSDD.h"
#include "AliITSCalibrationSDD.h"
+#include "AliITSMapSDD.h"
#include "AliITSCalibrationSSD.h"
#include "AliITSNoiseSSD.h"
#include "AliITSGainSSD.h"
AliCDBEntry *entrySPD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSPD", run);
AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", run);
+ AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD",run);
+ AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD",run);
// AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", run);
- AliCDBEntry *entryNoiseSSD = AliCDBManager::Instance()->Get("ITS/Calib/NoiseSSD");
- AliCDBEntry *entryGainSSD = AliCDBManager::Instance()->Get("ITS/Calib/GainSSD");
- AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
+ AliCDBEntry *entryNoiseSSD = AliCDBManager::Instance()->Get("ITS/Calib/NoiseSSD");
+ AliCDBEntry *entryGainSSD = AliCDBManager::Instance()->Get("ITS/Calib/GainSSD");
+ AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", run);
AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", run);
AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD ||
- !entry2SPD || !entry2SDD || !entry2SSD){
+ !entry2SPD || !entry2SDD || !entry2SSD || !mapASDD ||!mapTSDD){
AliFatal("Calibration object retrieval failed! ");
return kFALSE;
}
- if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD ||
- !entry2SPD || !entry2SDD || !entry2SSD){
- AliFatal("Calibration object retrieval failed! ");
- return kFALSE;
- }
+// if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD ||
+// !entry2SPD || !entry2SDD || !entry2SSD){
+// AliFatal("Calibration object retrieval failed! ");
+// return kFALSE;
+// }
TObjArray *calSPD = (TObjArray *)entrySPD->GetObject();
if(!isCacheActive)entrySPD->SetObject(NULL);
if(!isCacheActive)entry2SDD->SetObject(NULL);
entry2SDD->SetOwner(kTRUE);
+ TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
+ if(!isCacheActive)mapASDD->SetObject(NULL);
+ mapASDD->SetOwner(kTRUE);
+
+ TObjArray *mapT = (TObjArray *)mapTSDD->GetObject();
+ if(!isCacheActive)mapTSDD->SetObject(NULL);
+ mapTSDD->SetOwner(kTRUE);
+
/*
TObjArray *calSSD = (TObjArray *)entrySSD->GetObject();
if(!isCacheActive)entrySSD->SetObject(NULL);
delete entry2SPD;
delete entry2SDD;
delete entry2SSD;
+ delete mapASDD;
+ delete mapTSDD;
}
AliCDBManager::Instance()->SetCacheFlag(origCacheStatus);
if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD)
- || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
+ || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
AliWarning("Can not get calibration from calibration database !");
return kFALSE;
}
cal->SetResponse(pSPD);
SetCalibrationModel(i, cal);
}
+ Int_t nn1=0;
+ Int_t nn2=0;
for (Int_t i=0; i<fNMod[1]; i++) {
cal = (AliITSCalibration*) calSDD->At(i);
cal->SetResponse(pSDD);
+ AliITSMapSDD* m1 = (AliITSMapSDD*)mapAn->At(nn1);nn1++;
+ AliITSMapSDD* m2 = (AliITSMapSDD*)mapAn->At(nn1);nn1++;
+ AliITSMapSDD* m3 = (AliITSMapSDD*)mapT->At(nn2);nn2++;
+ AliITSMapSDD* m4 = (AliITSMapSDD*)mapT->At(nn2);nn2++;
+ cal->SetMapA(0,m1);
+ cal->SetMapA(1,m2);
+ cal->SetMapT(0,m3);
+ cal->SetMapT(1,m4);
Int_t iMod = i + fNMod[0];
SetCalibrationModel(iMod, cal);
}
#pragma link C++ class AliITSCalibrationSPD+;
#pragma link C++ class AliITSCalibrationSDD+;
#pragma link C++ class AliITSCalibrationSSD+;
+#pragma link C++ class AliITSMapSDD+;
#pragma link C++ class AliITSBadChannelsSSD+;
#pragma link C++ class AliITSGainSSD+;
#pragma link C++ class AliITSNoiseSSD+;
AliITSCalibrationSPD.cxx \
AliITSCalibrationSDD.cxx \
AliITSCalibrationSSD.cxx \
+ AliITSMapSDD.cxx \
AliITSBadChannelsSSD.cxx \
AliITSGainSSD.cxx \
AliITSNoiseSSD.cxx \