]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOS.cxx
Mixture ArCO2 is corrected
[u/mrichter/AliRoot.git] / PHOS / AliPHOS.cxx
index 9eff25a38469336a04a9020ad364621ee40be6d9..ed2e21f2b6f0ae761f28e0bb123110ea36170fb1 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 /* $Id$ */
+/* History of cvs commits:
+ *
+ * $Log$
+ * Revision 1.90  2005/06/17 07:39:07  hristov
+ * Removing GetDebug and SetDebug from AliRun and AliModule. Using AliLog for the messages
+ *
+ * Revision 1.89  2005/05/28 12:10:07  schutz
+ * Copy constructor is corrected (by T.P.)
+ *
+ */
 
 //_________________________________________________________________________
 // Base Class for PHOS description:
@@ -54,16 +64,12 @@ Int_t    AliPHOS::fgOrder       = 2 ;
 Double_t AliPHOS::fgTimeMax     = 2.56E-5 ;  // each sample is over 100 ns fTimeMax/fTimeBins
 Double_t AliPHOS::fgTimePeak    = 4.1E-6 ;   // 4 micro seconds
 Double_t AliPHOS::fgTimeTrigger = 100E-9 ;      // 100ns, just for a reference
 
 //____________________________________________________________________________
   AliPHOS:: AliPHOS() : AliDetector()
 {
   // Default ctor
   fName   = "PHOS" ;
-  fQATask = 0;
-  fTreeQA = 0;
-  fDebug  = 0; 
 
 }
 
@@ -72,9 +78,6 @@ AliPHOS::AliPHOS(const char* name, const char* title): AliDetector(name, title)
 {
   //   ctor : title is used to identify the layout
   
-  fQATask = 0 ; 
-  fTreeQA = 0 ;
-  fDebug  = 0 ; 
   fHighCharge        = 8.2 ;          // adjusted for a high gain range of 5.12 GeV (10 bits)
   fHighGain          = 6.64 ; 
   fHighLowGainFactor = 16. ;          // adjusted for a low gain range of 82 GeV (10 bits) 
@@ -88,12 +91,17 @@ AliPHOS::~AliPHOS()
 }
 
 //____________________________________________________________________________
-void AliPHOS::Copy(AliPHOS & phos)
+void AliPHOS::Copy(TObject &obj)const
 {
   // copy method to be used byy the cpy ctor
-  TObject::Copy(phos) ; 
-  //  fQATask = AliPHOSQAChecker::Copy(*(phos.fQATask)) ; 
-  phos.fTreeQA = fTreeQA->CloneTree() ; 
+  TObject::Copy(obj);
+  
+  AliPHOS &phos = static_cast<AliPHOS &>(obj); 
+  
+  phos.fHighCharge        = fHighCharge ;
+  phos.fHighGain          = fHighGain ; 
+  phos.fHighLowGainFactor = fHighLowGainFactor ;  
+  phos.fLowGainOffset     = fLowGainOffset;   
 }
 
 //____________________________________________________________________________
@@ -166,7 +174,7 @@ void AliPHOS::CreateMaterials()
 
   AliMixture(7, "Thermo Insul.$", aTI, zTI, dTI, -2, wTI) ;
 
-  // --- Textolitn ---
+  // --- Textolith ---
   Float_t aTX[4] = {16.0, 28.09, 12.011, 1.00794} ;
   Float_t zTX[4] = {8.0, 14.0, 6.0, 1.0} ;
   Float_t wTX[4] = {292.0, 68.0, 462.0, 736.0} ;
@@ -175,12 +183,12 @@ void AliPHOS::CreateMaterials()
   AliMixture(8, "Textolit$", aTX, zTX, dTX, -4, wTX) ;
 
   //--- FR4  ---
-  Float_t aFR[3] = {28.0855, 15.9994, 17.749} ; 
-  Float_t zFR[3] = {14., 8., 8.875} ; 
-  Float_t wFR[3] = {.28, .32, .4} ;
+  Float_t aFR[4] = {16.0, 28.09, 12.011, 1.00794} ;
+  Float_t zFR[4] = {8.0, 14.0, 6.0, 1.0} ;
+  Float_t wFR[4] = {292.0, 68.0, 462.0, 736.0} ;
   Float_t dFR = 1.8 ; 
 
-  AliMixture(9, "FR4$", aFR, zFR, dFR, -3, wFR) ;
+  AliMixture(9, "FR4$", aFR, zFR, dFR, -4, wFR) ;
 
   // --- The Composite Material for  micromegas (so far polyetylene) ---                                       
   Float_t aCM[2] = {12.01, 1.} ; 
@@ -217,31 +225,16 @@ void AliPHOS::CreateMaterials()
   Float_t dAr = 0.001782 ; 
   AliMaterial(15, "Ar$", 39.948, 18.0, dAr, 14.0, 0., 0, 0) ;   
  
- // ArCo2
-  Char_t namate[21]="";
-  Float_t aGM[2] ; 
-  Float_t zGM[2] ; 
-  Float_t wGM[2] ; 
-  Float_t dGM ; 
-
-  Float_t absL, radL, density ;
-  Float_t buf[1] ;
-  Int_t nbuf ;
-
-  gMC->Gfmate((*fIdmate)[15], namate, aGM[0], zGM[0], density, radL, absL, buf, nbuf) ; // Get properties of Ar 
-  gMC->Gfmate((*fIdmate)[14], namate, aGM[1], zGM[1], density, radL, absL, buf, nbuf) ; // Get properties of CO2 
-
-
-  // Create gas mixture 
-
-  Float_t arContent    = 0.80 ;  // Ar-content of the Ar/CO2-mixture (80% / 20%) 
-  wGM[0] = arContent;
-  wGM[1] = 1. - arContent ;
-  dGM    = wGM[0] * dAr + wGM[1] * dCO;
-
-  
-  AliMixture(16, "ArCO2$", aGM, zGM, dGM,  2, wGM) ;
+  // Ar+CO2 Mixture (80% / 20%)
+  Float_t arContent = 0.80 ;  // Ar-content of the ArCO2-mixture
+  Float_t aArCO[3]  = {39.948, 12.0, 16.0} ;
+  Float_t zArCO[3]  = {18.0  ,  6.0,  8.0} ;
+  Float_t wArCO[3];
+  wArCO[0] = arContent;
+  wArCO[1] = (1-arContent)*1;
+  wArCO[2] = (1-arContent)*2;
+  Float_t dArCO = arContent*dAr + (1-arContent)*dCO ;
+  AliMixture(16, "ArCO2$", aArCO, zArCO, dArCO,  -3, wArCO) ;
 
   // --- Stainless steel (let it be pure iron) ---
   AliMaterial(17, "Steel$", 55.845, 26, 7.87, 1.76, 0., 0, 0) ;
@@ -408,7 +401,7 @@ void AliPHOS::Digits2Raw()
   TClonesArray* digits = loader->Digits() ;
 
   if (!digits) {
-    Error("Digits2Raw", "no digits found !");
+    AliError(Form("No digits found !"));
     return;
   }
 
@@ -419,7 +412,7 @@ void AliPHOS::Digits2Raw()
   // get the geometry
   AliPHOSGeometry* geom = GetGeometry();
   if (!geom) {
-    Error("Digits2Raw", "no geometry found !");
+    AliError(Form("No geometry found !"));
     return;
   }
 
@@ -483,12 +476,15 @@ void AliPHOS::Digits2Raw()
       else 
        energy = digit->GetAmp() * digitizer->GetCPVchannel() + digitizer->GetCPVpedestal() ;
         
-      RawSampledResponse(digit->GetTimeR(), energy, adcValuesHigh, adcValuesLow) ; 
+      Bool_t lowgain = RawSampledResponse(digit->GetTimeR(), energy, adcValuesHigh, adcValuesLow) ; 
       
-      buffer->WriteChannel(relId[3], relId[2], module, 
-                          GetRawFormatTimeBins(), adcValuesHigh, kThreshold);
-      buffer->WriteChannel(relId[3], relId[2], module + fLowGainOffset, 
+     if (lowgain) 
+       buffer->WriteChannel(relId[3], relId[2], module + fLowGainOffset, 
                           GetRawFormatTimeBins(), adcValuesLow, kThreshold);
+      else 
+       buffer->WriteChannel(relId[3], relId[2], module, 
+                            GetRawFormatTimeBins(), adcValuesHigh, kThreshold);
+      
     }
   }
   
@@ -507,10 +503,9 @@ void AliPHOS::Hits2SDigits()
 { 
 // create summable digits
 
-  AliPHOSSDigitizer* phosDigitizer = 
-    new AliPHOSSDigitizer(fLoader->GetRunLoader()->GetFileName().Data()) ;
-  phosDigitizer->SetEventRange(0, -1) ; // do all the events
-  phosDigitizer->ExecuteTask("all") ;
+  AliPHOSSDigitizer phosDigitizer(fLoader->GetRunLoader()->GetFileName().Data()) ;
+  phosDigitizer.SetEventRange(0, -1) ; // do all the events
+  phosDigitizer.ExecuteTask("all") ; 
 }
 
 //____________________________________________________________________________
@@ -596,48 +591,16 @@ void AliPHOS::SetTreeAddress()
   TBranch *branch;
   char branchname[20];
   sprintf(branchname,"%s",GetName());
-  
   // Branch address for hit tree
-  TTree *treeH = TreeH();
+    TTree *treeH = TreeH();
   if (treeH) {
     branch = treeH->GetBranch(branchname);
     if (branch) 
      { 
        if (fHits == 0x0) fHits= new TClonesArray("AliPHOSHit",1000);
-       //Info("SetTreeAddress","<%s> Setting Hits Address",GetName());
+       //AliInfo(Form("<%s> Setting Hits Address",GetName()));
        branch->SetAddress(&fHits);
      }
   }
 }
 
-//____________________________________________________________________________
-void AliPHOS::WriteQA()
-{
-
-  // Make TreeQA in the output file. 
-
-  if(fTreeQA == 0)
-    fTreeQA = new TTree("TreeQA", "QA Alarms") ;    
-  // Create Alarms branches
-  Int_t bufferSize = 32000 ;    
-  Int_t splitlevel = 0 ; 
-
-  TFolder* topfold = GetLoader()->GetTopFolder(); //get top aliroot folder; skowron
-  TString phosqafn(AliConfig::Instance()->GetQAFolderName()+"/"); //get name of QAaut folder relative to top event; skowron
-  phosqafn+=GetName(); //hard wired string!!! add the detector name to the pathname; skowron 
-  TFolder * alarmsF = (TFolder*)topfold->FindObjectAny(phosqafn); //get the folder
-  if (alarmsF == 0x0)
-   {
-     Error("WriteQA","Can not find folder with qa alarms");
-     return;
-   }
-  TString branchName(alarmsF->GetName());
-  TBranch * alarmsBranch = fTreeQA->Branch(branchName,"TFolder", &alarmsF, bufferSize, splitlevel);
-  TString branchTitle = branchName + " QA alarms" ; 
-  alarmsBranch->SetTitle(branchTitle);
-  alarmsBranch->Fill() ; 
-
-  //fTreeQA->Fill() ; 
-}
-