]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
SDD maps are now separate objects in OCDB
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 5 Sep 2007 21:59:25 +0000 (21:59 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 5 Sep 2007 21:59:25 +0000 (21:59 +0000)
ITS/AliITSCalibration.h
ITS/AliITSCalibrationSDD.cxx
ITS/AliITSCalibrationSDD.h
ITS/AliITSDetTypeRec.cxx
ITS/AliITSDetTypeSim.cxx
ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root
ITS/Calib/MapsAnodeSDD/Run0_9999999_v0_s0.root [new file with mode: 0644]
ITS/Calib/MapsTimeSDD/Run0_9999999_v0_s0.root [new file with mode: 0644]
ITS/ITSbaseLinkDef.h
ITS/libITSbase.pkg

index bdc6f5442e5fc85c9a7c276f79b0104da3d9398d..22946835e8e7424a41a682ed3afc4dfd1f6557f0 100644 (file)
@@ -9,7 +9,9 @@
 
 #include <TObject.h>
 #include <TString.h>
+#include "AliLog.h"
 #include "AliITSresponse.h"
+#include "AliITSMapSDD.h"
 
 class AliITSsegmentation;
 class TF1;
@@ -74,6 +76,8 @@ class AliITSCalibration : public TObject {
     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;
index c60c868b3e7191be39934904d0e6471bbd461144..c3adadf93360d28570702d18c92015657edf8585 100644 (file)
@@ -41,7 +41,11 @@ fDeadChips(0),
 fDeadChannels(0),
 fMinVal(fgkMinValDefault),
 fIsDead(kFALSE),
-fBadChannels()
+fBadChannels(),
+fMapAW0(0),
+fMapAW1(0),
+fMapTW0(0),
+fMapTW1(0)
 {
   // default constructor
 
@@ -60,12 +64,13 @@ fBadChannels()
   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):
@@ -74,7 +79,11 @@ fDeadChips(0),
 fDeadChannels(0),
 fMinVal(fgkMinValDefault),
 fIsDead(kFALSE),
-fBadChannels(){
+fBadChannels(),
+fMapAW0(0),
+fMapAW1(0),
+fMapTW0(0),
+fMapTW1(0){
   // constructor
 
   SetDeadChannels();
@@ -93,15 +102,24 @@ fBadChannels(){
   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 {
index d0c798b71a431c9af7e65622260dbba1add505f9..e931e1196a6841b6b35fa1911623b8f0b3f27786 100644 (file)
@@ -9,6 +9,7 @@
 #include "AliITSresponseSDD.h"
 #include "TArrayI.h"
 
+class AliITSMapSDD;
 class AliITSresponseSDD;
 ///////////////////////////////////////////////////////
 //  Response for SDD                                 //
@@ -21,7 +22,7 @@ class AliITSCalibrationSDD : public AliITSCalibration {
     //
     AliITSCalibrationSDD();
     AliITSCalibrationSDD(const char *dataType);
-    virtual ~AliITSCalibrationSDD() {;}
+    virtual ~AliITSCalibrationSDD();
     virtual void  SetNoiseParam(Double_t /*n*/, Double_t /*b*/){
       NotImplemented("SetNoiseParam");}
  
@@ -84,10 +85,22 @@ class AliITSCalibrationSDD : public AliITSCalibration {
     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);}
@@ -141,15 +154,20 @@ class AliITSCalibrationSDD : public AliITSCalibration {
 
     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
index d253d34046b47a947985b5ec908a1ffea35f0178..4acdcbde1a1cf864fc47887973d468b1eca45f4b 100644 (file)
@@ -44,6 +44,7 @@
 #include "AliITSRawClusterSSD.h"
 #include "AliITSRecPoint.h"
 #include "AliITSCalibrationSDD.h"
+#include "AliITSMapSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSD.h"
 #include "AliITSGainSSD.h"
@@ -397,9 +398,11 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   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;
   }    
@@ -420,6 +423,14 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   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);
@@ -446,10 +457,12 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     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;
   }
@@ -464,13 +477,23 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     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();
index e2df8274e0a68b79f1a5b2af9112f4fcdf06ccc6..541224e7dd359d46086df66c5126910e39af18ae 100644 (file)
@@ -44,6 +44,7 @@
 #include "AliITSpListItem.h"
 #include "AliITSresponseSDD.h"
 #include "AliITSCalibrationSDD.h"
+#include "AliITSMapSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSD.h"
 #include "AliITSGainSSD.h"
@@ -451,26 +452,28 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
 
   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);
@@ -488,6 +491,14 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   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);
@@ -520,12 +531,14 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     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;
   }
@@ -541,9 +554,19 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     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);
  }
index e0cf6b48fd57367b89895fb99b0a913d6bef0125..35a41cff777a0b34763bca0c20f42d05d8c52124 100644 (file)
Binary files a/ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root and b/ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root differ
diff --git a/ITS/Calib/MapsAnodeSDD/Run0_9999999_v0_s0.root b/ITS/Calib/MapsAnodeSDD/Run0_9999999_v0_s0.root
new file mode 100644 (file)
index 0000000..299fc0a
Binary files /dev/null and b/ITS/Calib/MapsAnodeSDD/Run0_9999999_v0_s0.root differ
diff --git a/ITS/Calib/MapsTimeSDD/Run0_9999999_v0_s0.root b/ITS/Calib/MapsTimeSDD/Run0_9999999_v0_s0.root
new file mode 100644 (file)
index 0000000..b4caf26
Binary files /dev/null and b/ITS/Calib/MapsTimeSDD/Run0_9999999_v0_s0.root differ
index 943ace3232c9c8819b984843121670f21e2e9936..d437ee7b1ef2e7b56f0689106f6440fe1eb72668 100644 (file)
@@ -52,6 +52,7 @@
 #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+;
index 1aa32b7ed3dcd9e1798ea2f1f16076995c69e711..0b29eab44c103ed73a14f81251c8e09d5dc00f91 100644 (file)
@@ -29,6 +29,7 @@ SRCS =        AliITSgeom.cxx \
                AliITSCalibrationSPD.cxx \
                AliITSCalibrationSDD.cxx \
                AliITSCalibrationSSD.cxx \
+               AliITSMapSDD.cxx \
                AliITSBadChannelsSSD.cxx \
                AliITSGainSSD.cxx \
                AliITSNoiseSSD.cxx \