]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSsimulationSDD.cxx
modifications to satisfy the coding conventions
[u/mrichter/AliRoot.git] / ITS / AliITSsimulationSDD.cxx
index 544f23fa393608ea2aea2baad53796e0df171c51..469fb9831059c81194305f042f25b4697b3fafdf 100644 (file)
@@ -18,7 +18,7 @@
 #include <Riostream.h>
 #include <stdlib.h>
 #include <stdio.h>
-#include <string.h>
+#include <cstring>
 
 #include <TCanvas.h>
 #include <TF1.h>
@@ -33,7 +33,6 @@
 #include "AliITSetfSDD.h"
 #include "AliITSmodule.h"
 #include "AliITSpList.h"
-#include "AliITSresponseSDD.h"
 #include "AliITSCalibrationSDD.h"
 #include "AliITSsegmentationSDD.h"
 #include "AliITSsimulationSDD.h"
@@ -151,8 +150,8 @@ void AliITSsimulationSDD::Init(){
     SetDoFFT();
 
     AliITSsegmentationSDD* seg = (AliITSsegmentationSDD*)GetSegmentationModel(1);
-    
-    AliITSresponseSDD* res = (AliITSresponseSDD*)fDetType->GetResponse(1);
+    if(seg->Npx()==128) fScaleSize=8;
+    AliITSSimuParam* simpar = fDetType->GetSimuParam();
     fpList = new AliITSpList( seg->Npz(),
                               fScaleSize*seg->Npx() );
     fHitSigMap2 = new AliITSMapA2(seg,fScaleSize,1);
@@ -175,10 +174,8 @@ void AliITSsimulationSDD::Init(){
 
 
     fElectronics = new AliITSetfSDD(timeStep/fScaleSize,
-                                    res->Electronics());
+                                    simpar->GetSDDElectronics());
 
-    char opt1[20], opt2[20];
-    res->ParamOptions(opt1,opt2);
 
     fITS       = (AliITS*)gAlice->GetModule("ITS");
  
@@ -254,7 +251,6 @@ void AliITSsimulationSDD::FastFourierTransform(Double_t *real,
         m /= 2;
         m2 += m2;
     } // end for i
-  
     for(j=0; j<samples; j++) {
         Int_t j1 = j;
         Int_t p = 0;
@@ -304,9 +300,9 @@ void AliITSsimulationSDD::SDigitiseModule(AliITSmodule *mod,Int_t md,Int_t ev){
 Bool_t AliITSsimulationSDD::AddSDigitsToModule(TClonesArray *pItemArray,
                                                Int_t mask ) {
     // Add Summable digits to module maps.
-   AliITSresponseSDD* res = (AliITSresponseSDD*)fDetType->GetResponse(1);
+    AliITSSimuParam* simpar = fDetType->GetSimuParam();
     Int_t    nItems = pItemArray->GetEntries();
-    Double_t maxadc = res->MaxAdc();
+    Double_t maxadc = simpar->GetSDDMaxAdc();
     Bool_t sig = kFALSE;
     
     // cout << "Adding "<< nItems <<" SDigits to module " << fModule << endl;
@@ -378,8 +374,8 @@ void AliITSsimulationSDD::FinishDigits() {
     if( fCrosstalkFlag ) ApplyCrosstalk(fModule);
 
     AliITSCalibrationSDD* res = (AliITSCalibrationSDD*)GetCalibrationModel(fModule);
-    const char *kopt = res->GetZeroSuppOption();
-    if (strstr(kopt,"ZS")) Compress2D();
+    Bool_t isZeroSupp = res->GetZeroSupp();
+    if (isZeroSupp) Compress2D();
     else StoreAllDigits();
 }
 //______________________________________________________________________
@@ -387,6 +383,8 @@ void AliITSsimulationSDD::HitsToAnalogDigits( AliITSmodule *mod ) {
     // create maps to build the lists of tracks for each digit
   AliITSsegmentationSDD* seg = (AliITSsegmentationSDD*)GetSegmentationModel(1);
   AliITSCalibrationSDD* res = (AliITSCalibrationSDD*)GetCalibrationModel(fModule);
+  AliITSSimuParam* simpar = fDetType->GetSimuParam();
+
   TObjArray *hits     = mod->GetHits();
     Int_t      nhits    = hits->GetEntriesFast();
 
@@ -397,16 +395,15 @@ void AliITSsimulationSDD::HitsToAnalogDigits( AliITSmodule *mod ) {
     Double_t  anodePitch = seg->Dpz(0);
     Double_t  timeStep   = seg->Dpx(0);
     Double_t  driftSpeed ;  // drift velocity (anode dependent)
-    //Float_t   maxadc     = res->GetMaxAdc();    
-    //Float_t   topValue   = res->GetDynamicRange();
-    Double_t  norm       = res->GetMaxAdc()/res->GetDynamicRange(); //   maxadc/topValue;
-    Double_t  cHloss     = res->GetChargeLoss();
-    Float_t   dfCoeff, s1; res->DiffCoeff(dfCoeff,s1); // Signal 2d Shape
-    Double_t  eVpairs    = res->GetGeVToCharge()*1.0E9; // 3.6 eV by def.
-    Double_t  nsigma     = res->GetNSigmaIntegration(); //
-    Int_t     nlookups   = res->GetGausNLookUp();       //
-    Float_t   jitter     = res->GetJitterError(); // 
-
+    Double_t  norm       = simpar->GetSDDMaxAdc()/simpar->GetSDDDynamicRange(); //   maxadc/topValue;
+    Double_t  cHloss     = simpar->GetSDDChargeLoss();
+    Float_t   dfCoeff, s1; 
+    simpar->GetSDDDiffCoeff(dfCoeff,s1); // Signal 2d Shape
+    Double_t  eVpairs    = simpar->GetGeVToCharge()*1.0E9; // 3.6 eV by def.
+    Double_t  nsigma     = simpar->GetNSigmaIntegration(); //
+    Int_t     nlookups   = simpar->GetGausNLookUp();       //
+    Float_t   jitter     = simpar->GetSDDJitterError(); // 
+    
     // Piergiorgio's part (apart for few variables which I made float
     // when i thought that can be done
     // Fill detector maps with GEANT hits
@@ -521,8 +518,7 @@ void AliITSsimulationSDD::HitsToAnalogDigits( AliITSmodule *mod ) {
        if(timeSample > fScaleSize*fMaxNofSamples) {
          AliWarning(Form("Wrong Time Sample: %e",timeSample));
          continue;
-       } // end if timeSample > fScaleSize*fMaxNoofSamples
-       
+       } // end if timeSample > fScaleSize*fMaxNofSamples
        if(zAnode>nofAnodes) zAnode-=nofAnodes;  // to have the anode number between 0. and 256.
        if(zAnode*anodePitch > sddWidth || zAnode*anodePitch < 0.) 
          AliWarning(Form("Exceeding sddWidth=%e Z = %e",sddWidth,zAnode*anodePitch));
@@ -542,7 +538,7 @@ void AliITSsimulationSDD::HitsToAnalogDigits( AliITSmodule *mod ) {
        // Peak amplitude in nanoAmpere
        amplitude  = fScaleSize*160.*depEnergy/
          (timeStep*eVpairs*2.*acos(-1.)*sigT*sigA);
-       amplitude *= timeStep/25.; // WARNING!!!!! Amplitude scaling to 
+       //amplitude *= timeStep/25.; // WARNING!!!!! Amplitude scaling to 
        // account for clock variations 
        // (reference value: 40 MHz)
        chargeloss = 1.-cHloss*driftPath/1000.;
@@ -589,7 +585,7 @@ void AliITSsimulationSDD::HitsToAnalogDigits( AliITSmodule *mod ) {
          if(TMath::Abs(aExpo) > nsigma)  anodeAmplitude = 0.;
          else {
            Int_t theBin = (Int_t) ((aExpo+nsigma)/width+0.5);
-           anodeAmplitude = amplitude*res->GetGausLookUp(theBin);
+           anodeAmplitude = amplitude*simpar->GetGausLookUp(theBin);
          } // end if TMath::Abs(aEspo) > nsigma
          // index starts from 0
          index = iWing*nofAnodes+ia-1;
@@ -606,7 +602,7 @@ void AliITSsimulationSDD::HitsToAnalogDigits( AliITSmodule *mod ) {
              if(TMath::Abs(tExpo) > nsigma) timeAmplitude = 0.;
              else {
                Int_t theBin = (Int_t) ((tExpo+nsigma)/width+0.5);
-               timeAmplitude = anodeAmplitude*res->GetGausLookUp(theBin);
+               timeAmplitude = anodeAmplitude*simpar->GetGausLookUp(theBin);
              } // end if TMath::Abs(tExpo) > nsigma
              // build the list of Sdigits for this module        
              //                    arg[0]     = index;
@@ -678,15 +674,14 @@ void AliITSsimulationSDD::ChargeToSignal(Int_t mod,Bool_t bAddNoise, Bool_t bAdd
   // add baseline, noise, gain, electronics and ADC saturation effects
   // apply dead channels
 
-  char opt1[20], opt2[20];
   AliITSCalibrationSDD* res = (AliITSCalibrationSDD*)GetCalibrationModel(mod);
-  res->GetParamOptions(opt1,opt2);
   Double_t baseline=0; 
   Double_t noise=0; 
   Double_t gain=0; 
   Float_t contrib=0;
   Int_t i,k,kk;
-  Float_t maxadc = res->GetMaxAdc();    
+  AliITSSimuParam* simpar = fDetType->GetSimuParam();
+  Float_t maxadc = simpar->GetSDDMaxAdc();    
 
   for (i=0;i<fNofMaps;i++) {
     if( !fAnodeFire[i] ) continue;
@@ -704,7 +699,7 @@ void AliITSsimulationSDD::ChargeToSignal(Int_t mod,Bool_t bAddNoise, Bool_t bAdd
       }
       fInZI[k]  = 0.;
     } // end for k
-    if(!fDoFFT) {
+    if(!fDoFFT) {      
       for(k=0; k<fMaxNofSamples; k++) {
        Double_t newcont = 0.;
        Double_t maxcont = 0.;
@@ -749,11 +744,7 @@ void AliITSsimulationSDD::ChargeToSignal(Int_t mod,Bool_t bAddNoise, Bool_t bAdd
 void AliITSsimulationSDD::ApplyCrosstalk(Int_t mod) {
     // function add the crosstalk effect to signal
     // temporal function, should be checked...!!!
-    AliITSsegmentationSDD* seg = (AliITSsegmentationSDD*)GetSegmentationModel(1);
   
-    Int_t fNofMaps = seg->Npz();
-    Int_t fMaxNofSamples = seg->Npx();
-
     // create and inizialice crosstalk map
     Float_t* ctk = new Float_t[fNofMaps*fMaxNofSamples+1];
     if( ctk == NULL ) {