============================================================================

Description of ALICE Silicon Drift Detector (SDD) Code (Rev. 2 — May, 17th 2008 — F. Prino)

============================================================================

Content


  1. SDD module geometrical description

  2. Simulation

  3. Local Reconstruction

  4. Calibration files (OCDB)

  5. ECS Run types and DAs

  6. DCS data points



SDD module geometrical description

SDD module geometrical description (= anode numbering scheme, time bin definition, conversion from local coordinates to detector coordinates) is managed by the AliITSsegmentationSDD class. The detector is divided in 2 drift regions along the drift direction (horizontal in the following scheme).


Each drift region is read by 256 anodes (anode pitch = 294 micrometers).

The anode signal is sampled every 25 ns, this allows to measure the drift time of the charge produced by the crossing particle.

The memory depth (= number of time bins) is of 256 samplings per anode resulting in 6.4 microseconds of maximum drift time.

Detector size (active region) along anode axis = 256 * 294 microns = 75.264 mm

Detector size (active region) along drift axis = 2 * 35.085 mm = 70.170 mm

     microcables                                  microcables     
       /\                                           /\            
       ||                                           ||            
       ||                                           ||            
       ||                                           ||            
        0                     256                    0            
      0 |----------------------|---------------------| 511        
        |       time-bins      |     time-bins       |            
        | a                    |                   a |            
        | n                    |                   n |            
    X <_|_o____________________|___________________o_|__          
        | d                    |                   d |            
        | e     LEFT SIDE      |   RIGHT SIDE      e |            
        | s     CHANNEL 0      |   CHANNEL 1       s |               
        |       Xlocal > 0     |   Xlocal < 0        |               
    255 |----------------------|---------------------| 256           
                               |                                     
                               |                                     
                               V                                     
                               Z                                     


=================================================================================================================



Simulation

SDD digitization is implemented in the AliITSsimulationSDD class and managed via the AliITSDetTypeSim class.


Working scheme:


1) Hits --> SDigits (AliSimulation::RunSDigitization)

-> AliITS::Hits2SDigits

-> AliITS::Hits2Predigits

-> AliITSsimulationSDD::SDigitiseModule

-> AliITSsimulationSDD::HitsToAnalogDigits

- read hits, calculate anode and time bin using drift speed from OCDB and AliITSsegmentationSDD class

- apply electron cloud diffusion (gaussian smearing) along anode and drift directions, charge loss during drift (set to zero)

-> AliITSsimulationSDD::ChargeToSignal

- apply gain (from OCDB) to signal

- sum the signal to the baseline (from OCDB) value fluctuating with the

proper noise (from OCDB)

-> AliITSsimulationSDD::WriteSDigits

- call AliITS::AddSumDigit (which calls AliITSDetTypeSim::AddSumDigit) to write SDigits (AliITSpListItem) to file



2) SDigits --> Digits (AliSimulation::RunDigitization)

-> AliITSDigitizer::Exec

- load SDigits

-> AliITSsimulationSDD::FinishSDigitiseModule

-> AliITSsimulationSDD::FinishDigits

- check zero suppression option

-> AliITSsimulationSDD::Compress2D (if zero supp is active)

- apply zero suppression

- compress signal from 10 to 8 bit

- subtract low threshold

- calculate expanded signal by converting back from 8 to 10 bit

- store digit (by calling AliITS::AddSimDigit which calls

AliITSDetTypeSim::AddSimDigit) both compressed (8 bit, low threshold subtracted) and expanded (10 bit, low threshold added)

-> AliITSsimulationSDD::StoreAllDigits (if zero supp is not active)

- compress signal from 10 to 8 bit

- calculate expanded signal by converting back from 8 to 10 bit

- store digit (by calling AliITS::AddRealDigit which calls

AliITSDetTypeSim::AddRealDigit). Only expanded (10 bit) value is stored in fSignal. TO BE CHECKED AND FIXED!!!




========================================================================================================================


Local Reconstruction

Local reconstruction is implemented in AliITSClusterFinderV2SDD class and managed via the AliITSDetTypeRec class.


Working scheme:


Cluster Finding (AliReconstruction::RunLocalEventReconstruction)

-> AliITSReconstructor::Reconstruct

-> AliITSDetTypeRec::DigitsToRecPoints

- Two possibilities:

A) RECONSTRUCTION FROM DIGITS

-> AliITSClusterFinderV2SDD::FindRawClusters

- build AliBin array from digit tree

- apply gain (from OCDB) correction

B) RECONSTRUCTION FROM RAW DATA

-> AliITSClusterFinderV2SDD::RawdataToClusters

- instantiate AliITSRawStreamSDD object and set

1) ddl map

2) low threshold for zero suppression (needed to decompress raw data)

- build AliBin array from raw data

- apply gain (from OCDB) correction

-> AliITSClusterFinderV2SDD::FindClustersSDD

- loop on AliBin elements and:

1) apply noise suppression (AliITSClusterFinderV2SDD::NoiseSuppress)

2) find peaks (AliITSClusterFinderV2::FindPeaks)

3) unfold clusters (AliITSClusterFinderV2::MarkPeaks)

4) calculate coordinates (AliITSClusterFinderV2::MakeCluster)

5) calculate cluster size (TO BE REVIEWED)

6) convert from anode/time bin to local coordinates

using drift speed (from OCDB) and AliITSsegmentationSDD class

7) apply correction from laser maps (from OCDB)

8) convert cluster charge from ADC to keV (from OCDB)

9) add cluster to cluster array




===============================================================================================================================


Calibration Files (OCDB)

There are 6 directories in ITS/Calib with calibration data to be used in SDD reconstruction


1) DDLMapSDD

Contains: 1 AliITSDDLModuleMapSDD object with the correspondence between hardware/online and aliroot/offline numbering scheme for SDD modules

Online numbering scheme = DDL number, Carlos Number

SDD use 23 DDL each reading up to 12 Carlos cards (=12 modules)

Details on geometrical mapping can be found here.


Update in OCDB: every time the hardware cabling on the acquisition cards is modified (practically this should occur only at the beginning of data taking periods)

Object creation: macro StoreDDLMapSDD.C

strategy for storage via preprocessor to be finalized




2) CalibSDD:

Contains: 1 TObjArray with 260 AliITSCalibrationSDD objects, i.e. 1 AliITSCalibrationSDD object for each module with:

- status (0/1) of module

- status (0/1) for the 8 chips of the module

- flag to control the use of correction maps for the module

And:

- baseline

- noise

- gain

for each of the 520 anodes of the module

+ list of bad anodes (TArrayI)

NOTE: bad anodes are tagged in 2 ways:

1) inserted in the TArrayI of bad anode numbers

2) gain set to zero


Update in OCDB: after each sequence of PEDESTAL+PULSER run and PEDESTAL run -> launch ITSSDDBASda.cxx

-> measure baselines and noise for each anode

-> produce temporary output on LDC

PULSER run -> launch ITSSDDGAINda.cxx

-> read output of PEDESTAL

-> measure gain from test pulse for each anode

-> store baselines, noise and gain on FXS


Simulated files can be produced with the macro StoreCalibSDD.C



3) DriftSpeedSDD

Contains: 1 TObjArray of 520 AliITSDriftSpeedArraySDD objects, i.e. 1 AliITSDriftSpeedArraySDD for each drift region (hybrid).

The AliITSDriftSpeedArraySDD class contains AliITSDriftSpeedSDD objects with polynomial coefficients of fit to drift speed vs. anode number together with event number and event timestamp.

It provides methods for interpolation of drift speed vs. time.


Update in OCDB: 1) after an INJECTOR run

-> launch ITSSDDINJda.cxx

-> measure drift speed for each injector pad (33 drift speed determinations for each hybrid, at every 8th anode)

2) after a PHYSICS run (if and when SDD injector triggers will be implemented in the DAQ)


Simulated files can be produced with the macro StoreDriftSpeedSDD.C




4) RespSDD

Contains: 1 AliITSresponseSDD object with calibration parameters common to all modules:

- flag for zero suppressed data

- ADC to keV conversion factor for detected signal

- time offset to account for various delays in the measurement of drift time


Update in OCDB: from offline analysis (time offset from alignemnt studies

ADC to keV from reconstructed poits of cosmic tracks)


Simulated files can be produced with the macro StoreCalibSDD.C




5) MapsAnodeSDD

Contains: 1 TObjArray of 520 AliITSMapSDD objects, i.e. 1 AliITSMapSDD for each drift region (hybrid) with systematic deviations between particle crossing positions and reconstructed coordinates along anode axis

These residuals have been measured with the laser by scanning the detector surface on a discrete 2D grid.


Update in OCDB: never updated, data have been measured in the lab during the construction phase


Simulated files can be produced with the macro StoreMapsSDD.C




6) MapsTimeSDD

Contains: 1 TObjArray of 520 AliITSMapSDD objects, i.e. 1 AliITSMapSDD for each drift region (hybrid) with systematic deviations between particle crossing positions and reconstructed coordinates along drift axis

These residuals have been measured with the laser by scanning the detector surface on a discrete 2D grid.


Update in OCDB: never updated, data have been measured in the lab during the construction phase


Simulated files can be produced with the macro StoreMapsSDD.C




========================================================================================================================


ECD Run Types and DAs

---------------------


ECS Run Types available for SDD

1) STANDALONE

- for test purposes

- no DA launched at EOR


2) PEDESTAL

- GOAL: measure baselines and noise

- JTAG configuration: zero-suppression OFF

baseline equalization OFF

testpulse OFF

prepulse OFF

- DA: ITSSDDBASda.cxx (running on LDCs)

- uses AliITSOnlineSDDBase and AliITSOnlineSDDCMN classes

- calculates baseline, noise and common mode for each anode

- tags bad (= noisy + bad baseline) anodes


2) PULSER

- GOAL: measure gain

- JTAG configuration: zero-suppression OFF

baseline equalization OFF

testpulse ON

prepulse OFF

- DA: ITSSDDGAINda.cxx (running on LDCs)

- uses AliITSOnlineSDDTP class

- read PEDESTAL DA output

- calculates gain for each anode

- sets anodes with problems of gain (dead) as bad

- stores data to FXS


3) INJECTOR

- GOAL: measure drift speed

- JTAG configuration: zero-suppression ON

baseline equalization ON

testpulse OFF

prepulse ON

- DA: ITSSDDINJda.cxx (running on LDCs)

- uses AliITSOnlineSDDInjectors class

- calculates drift speed for each of the 33 groups of injectors


4) PHYSICS

Nothing done for now.

If/when injector triggers will be implemented in DAQ, a monitoring

DA will be prepared to calculated drift speed for these triggers.


===========================================================================================================================


DCS data points

DCS data points are used for reference. They are needed for a possible backup

estimation of drift speed in case of injector failure.


Values monitored (and stored every 2 minutes + when out of confidence band) by SDD DCS:

- 260 HV values (1 for each module)

- 260 MV values (1 for each module)

- 520 temperature values (1 for each hybrid)

Plus:

- 260 module status bits (1 for each module)

- 520 temperature status bits (1 for each hybrid)


Data treated by AliITSDCSAnalyzerSDD class which:

- compress status bits into 1 byte

- reduce data size by saving values only if out of confidence band with

respect to last stored value

- store data into AliITSDCSDataSDD objects for each module


Data stored in Reference/ITS/DCS/DataSDD.

Object stored: 1 TClonesArray of 260 AliITSDCSDataSDD (q for each module)