]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSresponseSDD.cxx
Changes related to the extraction of the V0 finder into a separate class (A. Dainese...
[u/mrichter/AliRoot.git] / ITS / AliITSresponseSDD.cxx
index 80e982d3489ae72d482f4c5d482af133a3d165b4..1ab76ba4d93f60471e0f5fc3aa957dbfb62c7f96 100644 (file)
@@ -1,6 +1,6 @@
 /**************************************************************************
  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- *                                                                         *
+ *                                                                        *
  * Author: The ALICE Off-line Project.                                    *
  * Contributors are mentioned in the code where appropriate.              *
  *                                                                        *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-#include <TMath.h>
-
-#include "AliITSgeom.h"
-#include "AliITSresponseSDD.h"
-#include "AliITS.h"
-#include "AliRun.h"
-
-class AliITS;
+/* $Id$ */
 
-//___________________________________________
-ClassImp(AliITSresponseSDD)    
+//////////////////////////////////////////////////////
+//  Base response class forITS                      //
+//  It is used to set static data members           //
+//  connected to parameters equal for all           //
+//  the modules                                     //
+//                                                  //
+//                                                  //
+//////////////////////////////////////////////////////
 
-AliITSresponseSDD::AliITSresponseSDD()
-{
-  // constructor
-   SetMaxAdc();
-   SetDiffCoeff();
-   SetQref();
-   SetDriftSpeed();
-   // SetClock();
-   SetNoiseParam();
-   SetMagicValue();
-   SetMinVal();
-   SetParamOptions();
-   SetZeroSupp();
-   SetDataType();
-   SetFilenames();
-   SetOutputOption();
+#include <TMath.h>
 
-}
+#include "AliITSresponseSDD.h"
+#include <AliITSgeomTGeo.h>
 
-//__________________________________________________________________________
-AliITSresponseSDD::AliITSresponseSDD(const AliITSresponseSDD &source){
-  //     Copy Constructor 
-  Int_t i;
-  if(&source == this) return;
-  for(i=0;i<8;i++){this->fCPar[i] = source.fCPar[i];}
-  this->fNoise = source.fNoise;
-  this->fBaseline = source.fBaseline;
-  this->fTopValue = source.fTopValue;
-  this->fTemperature = source.fTemperature;
-  this->fDriftSpeed = source.fDriftSpeed;
-  this->fMaxAdc = source.fMaxAdc;
-  this->fDiffCoeff = source.fDiffCoeff;
-  this->fQref = source.fQref;
-  this->fZeroSuppFlag = source.fZeroSuppFlag;
-  this->fMinVal = source.fMinVal;
-  this->fWrite = source.fWrite;
-  this->fOption = source.fOption;
-  this->fParam1 = source.fParam1;
-  return;
-}
+const Float_t AliITSresponseSDD::fgkTimeOffsetDefault = 54.30;
+const Float_t AliITSresponseSDD::fgkADC2keVDefault = 3.34;
+const Float_t AliITSresponseSDD::fgkChargevsTimeDefault = 0.00355;
+const Float_t AliITSresponseSDD::fgkCarlosRXClockPeriod = 25.;
+ClassImp(AliITSresponseSDD)
 
 //_________________________________________________________________________
-AliITSresponseSDD& 
-  AliITSresponseSDD::operator=(const AliITSresponseSDD &source) {
-  //    Assignment operator
-  Int_t i;
-  if(&source == this) return *this;
-  for(i=0;i<8;i++){this->fCPar[i] = source.fCPar[i];}
-  this->fNoise = source.fNoise;
-  this->fBaseline = source.fBaseline;
-  this->fTopValue = source.fTopValue;
-  this->fTemperature = source.fTemperature;
-  this->fDriftSpeed = source.fDriftSpeed;
-  this->fMaxAdc = source.fMaxAdc;
-  this->fDiffCoeff = source.fDiffCoeff;
-  this->fQref = source.fQref;
-  this->fZeroSuppFlag = source.fZeroSuppFlag;
-  this->fMinVal = source.fMinVal;
-  this->fWrite = source.fWrite;
-  this->fOption = source.fOption;
-  this->fParam1 = source.fParam1;
-  return *this;
+AliITSresponseSDD::AliITSresponseSDD():
+TObject(),
+fTimeOffset(fgkTimeOffsetDefault),
+fADC2keV(fgkADC2keVDefault),
+fChargevsTime(fgkChargevsTimeDefault){
+  // default constructor
+  for(Int_t i=0; i<kNSDDmods;i++){
+    fTimeZero[i]=fgkTimeOffsetDefault;
+    fDeltaVDrift[i]=0.;
+  }  
 }
-
-void AliITSresponseSDD::SetCompressParam(Int_t  cp[8])
-{
-  // set compression param
-    Int_t i;
-    for(i=0; i<8; i++) {
-       fCPar[i]=cp[i];
-       //printf("\n CompressPar %d %d \n",i,fCPar[i]);
-       
+//_________________________________________________________________________
+void AliITSresponseSDD::SetHalfLadderATimeZero(Int_t lay, Int_t lad, Float_t tzero){
+  // Sets time Zero for all modules of a ladder on side A (Z>0)
+  Int_t minMod,maxMod;
+  if(lay==3){
+    minMod=1; 
+    maxMod=3;
+    if(lad>kNLaddersLay3){
+      AliError(Form("Ladder number %d out of range",lad));
+      return;
     }
-}
-void AliITSresponseSDD::GiveCompressParam(Int_t  cp[8])
-{
-  // give compression param
-    Int_t i;
-    for(i=0; i<8; i++) {
-       cp[i]=fCPar[i];
+  }else if(lay==4){
+    minMod=1; 
+    maxMod=4;
+    if(lad>kNLaddersLay4){
+      AliError(Form("Ladder number %d out of range",lad));
+      return;
     }
+  }else{
+    AliError(Form("Layer number %d out of range",lay));
+    return;
+  }
+  for(Int_t iMod=minMod; iMod<=maxMod; iMod++){
+    Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(lay,lad,iMod);
+    SetModuleTimeZero(modIndex,tzero);
+  }
 }
-//______________________________________________________________________________
-void AliITSresponseSDD::Streamer(TBuffer &R__b)
-{
-   // Stream an object of class AliITSresponseSDD.
-
-   if (R__b.IsReading()) {
-      Version_t R__v = R__b.ReadVersion(); if (R__v) { }
-      AliITSresponse::Streamer(R__b);
-      R__b.ReadStaticArray(fCPar);
-      R__b >> fNoise;
-      R__b >> fBaseline;
-      R__b >> fTopValue;
-      R__b >> fTemperature;
-      R__b >> fDriftSpeed;
-      R__b >> fMaxAdc;
-      R__b >> fDiffCoeff;
-      R__b >> fQref;
-      R__b >> fZeroSuppFlag;
-      R__b >> fMinVal;
-      R__b >> fWrite;
-      //R__b.ReadArray(fOption); // Not to be printed out?
-      //R__b.ReadArray(fParam1); // Not to be printed out?
-      //R__b.ReadArray(fParam2); // Not to be printed out?
-      fDataType.Streamer(R__b);
-      fFileName1.Streamer(R__b);
-      fFileName2.Streamer(R__b);
-      fFileName3.Streamer(R__b);
-   } else {
-      R__b.WriteVersion(AliITSresponseSDD::IsA());
-      AliITSresponse::Streamer(R__b);
-      R__b.WriteArray(fCPar, 8);
-      R__b << fNoise;
-      R__b << fBaseline;
-      R__b << fTopValue;
-      R__b << fTemperature;
-      R__b << fDriftSpeed;
-      R__b << fMaxAdc;
-      R__b << fDiffCoeff;
-      R__b << fQref;
-      R__b << fZeroSuppFlag;
-      R__b << fMinVal;
-      R__b << fWrite;
-      //R__b.WriteArray(fOption, __COUNTER__); // Not to be printed out?
-      //R__b.WriteArray(fParam1, __COUNTER__); // Not to be printed out?
-      //R__b.WriteArray(fParam2, __COUNTER__); // Not to be printed out?
-      fDataType.Streamer(R__b);
-      fFileName1.Streamer(R__b);
-      fFileName2.Streamer(R__b);
-      fFileName3.Streamer(R__b);
-   }
+//_________________________________________________________________________
+void AliITSresponseSDD::SetHalfLadderCTimeZero(Int_t lay, Int_t lad, Float_t tzero){
+  // Sets time Zero for all modules of a ladder on side C (Z<0)
+  Int_t minMod,maxMod;
+  if(lay==3){
+    minMod=4; 
+    maxMod=6;
+    if(lad>kNLaddersLay3){
+      AliError(Form("Ladder number %d out of range",lad));
+      return;
+    }
+  }else if(lay==4){
+    minMod=5; 
+    maxMod=8;
+    if(lad>kNLaddersLay4){
+      AliError(Form("Ladder number %d out of range",lad));
+      return;
+    }
+  }else{
+    AliError(Form("Layer number %d out of range",lay));
+    return;
+  }
+  for(Int_t iMod=minMod; iMod<=maxMod; iMod++){
+    Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(lay,lad,iMod);
+    SetModuleTimeZero(modIndex,tzero);
+  }
 }