AliTPCSensorTemp: sensor positions updated according to ALICE-EN-2005-001
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 May 2007 14:17:58 +0000 (14:17 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 May 2007 14:17:58 +0000 (14:17 +0000)
  AliTPCSensorTempArray: GetSensor method to access sensor by
"TPC coordinates" (i.e. type, side, sector, number)
Interface versions of other GetSensor methods to avoid that these methods
from AliDCSSensorArray get hidden by the overloaded method.

AliTPCcalibDB: updated to include pressure.
                 Dummy copy constructor and operator= to avoid warnings

(Haavard)

TPC/AliTPCSensorTemp.cxx
TPC/AliTPCSensorTempArray.cxx
TPC/AliTPCSensorTempArray.h
TPC/AliTPCcalibDB.cxx
TPC/AliTPCcalibDB.h

index f86aabb..42565a8 100644 (file)
 ClassImp(AliTPCSensorTemp)
 
 
+const Float_t kASideX[18][5]={
+        { 99.6,  117.7,  161.2,  187.3,  213.5},
+       { 87.6,  103.7,  142.6,  165.6,  188.6},
+       { 65.0,   77.3,  106.8,  123.8,  140.9},
+       { 34.6,   41.5,   58.1,   67.2,   76.3},
+       {    0,    0.7,    2.4,    2.4,    2.4},
+       {-34.6,  -40.2,  -53.6,  -62.7,  -71.7},
+       {-65.0,  -76.2, -103.1, -120.2, -137.2},
+       {-87.6, -103.1, -140.2, -163.2, -186.2},
+       {-99.6, -117.5, -160.4, -186.5, -212.6},
+       {-99.6, -117.7, -161.2, -187.3, -213.5},
+       {-87.6, -103.7, -142.6, -165.6, -188.6},
+       {-65.0,  -77.3, -106.8, -123.8, -140.9},
+       {-34.6,  -41.5,  -58.1,  -67.2,  -76.3},
+       {    0,   -0.7,   -2.4,   -2.4,   -2.4},
+       { 34.6,   40.2,   53.6,   62.7,   71.7},
+       { 65.0,   76.2,  103.1,  120.2,  137.2},
+       { 87.6,  103.1,  140.2,  163.2,  186.2},
+       { 99.6,  117.5,  160.4,  186.5,  212.6}};
+       
+const Float_t kASideY[18][5]={
+        { 17.6,   20.1,   26.0,   30.6,   35.2},
+       { 50.6,   59.1,   79.5,   92.8,  106.1},
+       { 77.4,   91.0,  123.5,  143.9,  164.2},
+       { 95.0,  112.0,  152.6,  177.5,  202.5},
+       {101.1,  119.4,  163.3,  189.8,  216.4},
+       { 95.0,  112.4,  154.2,  179.2,  204.1},
+       { 77.4,   91.9,  126.6,  146.9,  167.3},
+       { 50.6,   60.3,   83.7,   97.0,  110.3},
+       { 17.6,   21.4,   30.7,   35.3,   39.9},
+       {-17.6,  -20.1,  -26.0,  -30.6,  -35.2},
+       {-50.6,  -59.1,  -79.5,  -92.8, -106.1},
+       {-77.4,  -91.0, -123.5, -143.9, -164.2},
+       {-95.0, -112.0, -152.6, -177.5, -202.5},
+       {-101.1, -119.4, -163.3, -189.8, -216.4},
+        {-95.0, -112.4, -154.2, -179.2, -204.1},
+       {-77.4,  -91.9, -126.6, -146.9, -167.3},
+       {-50.6,  -60.3,  -83.7,  -97.0, -110.3},
+       {-17.6,  -21.4,  -30.7,  -35.3,  -39.9}};  
+       
+const Float_t kCSideX[18][5]={
+        { 99.6,  117.5,  160.4,  186.5,  212.6},
+       { 87.6,  103.1,  140.2,  163.2,  186.2},
+       { 65.0,   76.2,  103.1,  120.2,  137.2},
+       { 34.6,   40.2,   53.6,   62.7,   71.7},
+       {    0,   -0.7,   -2.4,   -2.4,   -2.4},
+       {-34.6,  -41.5,  -58.1,  -67.2,  -76.3},
+       {-65.0,  -77.3, -106.8, -123.8, -140.9},
+       {-87.6, -103.7, -142.6, -165.6, -188.6},
+       {-99.6, -117.7, -161.2, -187.3, -213.5},
+       {-99.6, -117.5, -160.4, -186.5, -212.6},
+       {-87.6, -103.1, -140.2, -163.2, -186.2},
+       {-65.0,  -76.2, -103.1, -120.2, -137.2},
+       {-34.6,  -40.2,  -53.6,  -62.7,  -71.7},
+       {    0,    0.7,    2.4,    2.4,    2.4},
+       { 34.6,   41.5,   58.1,   67.2,   76.3},
+       { 65.0,   77.3,  106.8,  123.8,  140.9},
+       { 87.6,  103.7,  142.6,  165.6,  188.6},
+       { 99.6,  117.7,  161.2,  187.3,  213.5}};
+
+const Float_t kCSideY[18][5]={
+        { 17.6,   21.4,   30.7,   35.3,   39.9},
+       { 50.6,   60.3,   83.7,   97.0,  110.3},
+       { 77.4,   91.9,  126.6,  146.9,  167.3},
+       { 95.0,  112.4,  154.2,  179.2,  204.1},
+       {101.1,  119.4,  163.3,  189.8,  216.4},
+       { 95.0,  112.0,  152.6,  177.5,  202.5},
+       { 77.4,   91.0,  123.5,  143.9,  164.2},
+       { 50.6,   59.1,   79.5,   92.8,  106.1},
+       { 17.6,   20.1,   26.0,   30.6,   35.2},
+       {-17.6,  -21.4,  -30.7,  -35.3,  -39.9},
+       {-50.6,  -60.3,  -83.7,  -97.0, -110.3},
+       {-77.4,  -91.9, -126.6, -146.9, -167.3},
+       {-95.0, -112.4, -154.2, -179.2, -204.1},
+       {-101.1, -119.4, -163.3, -189.8, -216.4},
+        {-95.0, -112.0, -152.6, -177.5, -202.5},
+       {-77.4,  -91.0, -123.5, -143.9, -164.2},
+       {-50.6,  -59.1,  -79.5,  -92.8, -106.1},
+       {-17.6,  -20.1,  -26.0,  -30.6,  -35.2}};  
+
+const Float_t kIFCrad[5] = {67.2, 64.4, 60.7, 64.4, 67.2};
+
+
+
 AliTPCSensorTemp::AliTPCSensorTemp(): AliDCSSensor(),
   fType(0),
   fSide(0),
@@ -132,13 +216,18 @@ TClonesArray * AliTPCSensorTemp::ReadListInd(const char *fname,
     //temp->SetX(x);
 
     if (temp->GetType()==0){
-       temp->SetX(TMath::Cos((2*sector+1)*0.1745)*(83+(num+1)*30));
+//     temp->SetX(TMath::Cos((2*sector+1)*0.1745)*(83+(num+1)*30));
+      if (side[0]=='C') {
+          temp->SetX(kCSideX[sector][num]);
+      } else {
+          temp->SetX(kASideX[sector][num]);
+      }      
     }
     if ((temp->GetType()==1) || (temp->GetType()==4)){
-      temp->SetX(TMath::Cos((2*sector+1)*0.1745)*260);
+      temp->SetX(TMath::Cos((2*sector+1)*0.1745)*278);
     }
     if ((temp->GetType()==2) || (temp->GetType()==3)){
-      temp->SetX(TMath::Cos((2*sector+1)*0.1745)*83);
+      temp->SetX(TMath::Cos((2*sector+1)*0.1745)*kIFCrad[num]);
     }
     if ((temp->GetType()==5) || (temp->GetType()==6)){
       temp->SetX(0);
@@ -146,41 +235,46 @@ TClonesArray * AliTPCSensorTemp::ReadListInd(const char *fname,
     
     //temp->SetY(y);
     if (temp->GetType()==0){
-         temp->SetY(TMath::Sin((2*sector+1)*0.1745)*(83+(num+1)*30));
+//       temp->SetY(TMath::Sin((2*sector+1)*0.1745)*(83+(num+1)*30));
+      if (side[0]=='C') {
+          temp->SetY(kCSideY[sector][num]);
+      } else {
+          temp->SetY(kASideY[sector][num]);
+      }      
     }
     if ((temp->GetType()==1) || (temp->GetType()==4)){
-      temp->SetY(TMath::Sin((2*sector+1)*0.1745)*260);
+      temp->SetY(TMath::Sin((2*sector+1)*0.1745)*278);
     }
     if ((temp->GetType()==2) || (temp->GetType()==3)){
-      temp->SetY(TMath::Sin((2*sector+1)*0.1745)*83);
+      temp->SetY(TMath::Sin((2*sector+1)*0.1745)*kIFCrad[num]);
     }
     if ((temp->GetType()==5) || (temp->GetType()==6)){
       temp->SetY(0);
     }
     //temp->SetZ(z);
     if ((temp->GetType()==0 || temp->GetType()==3 || temp->GetType()==4 || temp->GetType()==5 || temp->GetType()==6) && temp->GetSide()==0) {
-      temp->SetZ(260);
+      temp->SetZ(250);
       }
     if ((temp->GetType()==0 || temp->GetType()==3 || temp->GetType()==4 || temp->GetType()==5 || temp->GetType()==6) && temp->GetSide()==1){
-      temp->SetZ(-260);
+      temp->SetZ(-250);
       }
     if((temp->GetType()==1 || temp->GetType()==2) && (num==0)) {
-      temp->SetZ(250);
+      temp->SetZ(240);
       }
     if((temp->GetType()==1 || temp->GetType()==2) && (num==1)) {
-      temp->SetZ(180);
+      temp->SetZ(168.4);
       }
     if((temp->GetType()==1 || temp->GetType()==2) && (num==2)) {
-      temp->SetZ(60);
+      temp->SetZ(51);
       }
     if((temp->GetType()==1 || temp->GetType()==2) && (num==3)) {
-      temp->SetZ(-60);
+      temp->SetZ(-51);
       }
     if((temp->GetType()==1 || temp->GetType()==2) && (num==4)) {
-      temp->SetZ(-180);
+      temp->SetZ(-168.4);
       }
     if((temp->GetType()==1 || temp->GetType()==2) && (num==5)) {
-      temp->SetZ(-250);
+      temp->SetZ(-240);
       }
   }
   delete tree;  
index 89948fa..52e4e37 100644 (file)
@@ -157,3 +157,27 @@ TMap* AliTPCSensorTempArray::ExtractDCS(TMap *dcsMap)
  return values;
 }
 
+//_____________________________________________________________________________
+AliTPCSensorTemp* AliTPCSensorTempArray::GetSensor(Int_t type, Int_t side, Int_t sector, Int_t num) 
+{
+ //
+ //  Return sensor information for sensor specified by type, side, sector and num
+ //
+ Int_t nsensors = fSensors->GetEntries();
+ for (Int_t isensor=0; isensor<nsensors; isensor++) {
+   AliTPCSensorTemp *entry = (AliTPCSensorTemp*)fSensors->At(isensor);
+   if (entry->GetSide() == side &&
+       entry->GetType() == type &&
+       entry->GetSector() == sector &&
+       entry->GetNum() == num ) return entry;
+ }
+ return 0;
+}
+//_____________________________________________________________________________
+AliTPCSensorTemp* AliTPCSensorTempArray::GetSensor(Int_t IdDCS){
+  return dynamic_cast<AliTPCSensorTemp*>(AliDCSSensorArray::GetSensor(IdDCS));
+}
+//_____________________________________________________________________________
+AliTPCSensorTemp* AliTPCSensorTempArray::GetSensor(Double_t x, Double_t y, Double_t z){
+  return dynamic_cast<AliTPCSensorTemp*>(AliDCSSensorArray::GetSensor(x,y,z));
+}
index add3950..075d9ad 100644 (file)
@@ -12,8 +12,8 @@
 
 #include "TSystem.h"
 
-#include "AliTPCSensorTemp.h"
 #include "AliDCSSensorArray.h"
+#include "AliTPCSensorTemp.h"
 
 class TTimeStamp;
 class TMap;
@@ -41,6 +41,9 @@ class AliTPCSensorTempArray : public AliDCSSensorArray {
   const char* GetAmandaString() { return fAmandaString.Data(); }
   void SetAmandaString(const char* string) {fAmandaString=string;}
   TMap* ExtractDCS  (TMap *dcsMap);
+  AliTPCSensorTemp* GetSensor (Int_t type, Int_t side, Int_t sector, Int_t num);
+  AliTPCSensorTemp* GetSensor (Int_t IdDCS);
+  AliTPCSensorTemp* GetSensor (Double_t x, Double_t y, Double_t z);
 
  protected:
 
index 528a17b..6206480 100644 (file)
@@ -78,23 +78,22 @@ void AliTPCcalibDB::Terminate()
 }
 
 //_____________________________________________________________________________
-AliTPCcalibDB::AliTPCcalibDB()
+AliTPCcalibDB::AliTPCcalibDB():
+  fRun(-1),
+  fPadGainFactor(0),
+  fPadTime0(0),
+  fPadPRFWidth(0),
+  fPadNoise(0),
+  fPedestals(0),
+  fTemperature(0),
+  fPressure(0),
+  fParam(0)
+
 {
   //
   // constructor
   //  
-  fRun = -1;
-      
-  //
   //
-  //
-  fPadGainFactor = 0;
-  fPadTime0      = 0;
-  fPadPRFWidth   = 0;
-  fPadNoise      = 0;
-  fPedestals     = 0;
-  fTemperature   = 0;
-  fParam         = 0;
   Update();    // temporary
 }
 
@@ -196,6 +195,14 @@ void AliTPCcalibDB::Update(){
     fTemperature = (AliTPCSensorTempArray*)entry->GetObject();
   }
 
+  entry          = GetCDBEntry("TPC/Calib/Pressure");
+  if (entry){
+    //if (fPressure) delete fPressure;
+    entry->SetOwner(kTRUE);
+    fPressure = (AliTPCSensorPressureArray*)entry->GetObject();
+  }
+
+
   entry          = GetCDBEntry("TPC/Calib/Parameters");
   if (entry){
     //if (fPadNoise) delete fPadNoise;
@@ -208,3 +215,20 @@ void AliTPCcalibDB::Update(){
   AliCDBManager::Instance()->SetCacheFlag(cdbCache); // reset original CDB cache
   
 }
+AliTPCcalibDB::AliTPCcalibDB(const AliTPCcalibDB& org)
+{
+  //
+  // Copy constructor invalid -- singleton implementation
+  //
+   Error("copy constructor","invalid -- singleton implementation");
+}
+
+AliTPCcalibDB& AliTPCcalibDB::operator= (const AliTPCcalibDB& rhs)
+{
+//
+// Singleton implementation - no assignment operator
+//
+  Error("operator =", "assignment operator not implemented");
+  return *this;
+}
+
index b245588..63a8d9b 100644 (file)
@@ -13,6 +13,7 @@
 #include "TObject.h"
 class AliTPCCalPad;
 class AliTPCSensorTempArray;
+class AliTPCSensorPressureArray;
 class AliCDBEntry;
 class AliTPCParam;
 //class AliCDBStorage;
@@ -32,6 +33,7 @@ class AliTPCcalibDB : public TObject
   AliTPCCalPad* GetPadNoise() {return fPadNoise;}
   AliTPCCalPad* GetPedestals() {return fPedestals;}
   AliTPCSensorTempArray* GetTemperature() {return fTemperature;}
+  AliTPCSensorPressureArray* GetPressure() {return fPressure;}
   AliTPCParam*  GetParameters(){return fParam;}
   //
 protected:
@@ -48,6 +50,7 @@ protected:
   AliTPCCalPad* fPadNoise;
   AliTPCCalPad* fPedestals;
   AliTPCSensorTempArray* fTemperature;
+  AliTPCSensorPressureArray *fPressure;
   //
   //
   AliTPCParam * fParam;
@@ -55,6 +58,9 @@ protected:
   static AliTPCcalibDB* fgInstance;
   static Bool_t       fgTerminated;
   ClassDef(AliTPCcalibDB, 0)
+ private:
+   AliTPCcalibDB (const AliTPCcalibDB& org);
+   AliTPCcalibDB& operator= (const AliTPCcalibDB& rhs);
 };