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 f86aabb893fd3fbbc2517d2785f4432b9fbf212f..42565a839bef275a32c2c5ef70ca4463ce3e6446 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 89948fab23950f5cf3a4c16e4d559c50e7d868fb..52e4e37066adf701ea40f025835ced8ad47a7621 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 add3950707af9d44c1ddb115f0daa7a5223de881..075d9ad4cc3c0ee58461797c6183adbe497c7844 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 528a17b3887c7f332d29fa3b99aa51b425a34c0e..62064802cdc8f2258ed7f685a4f3deceb59a4ca4 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 b2455880452408c93d5bb28735eb85de533a3ec0..63a8d9be06cb5ab459c71195d87919258c996f6c 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);
 };