Upgrade of SDD response class (F. Prino)
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Jul 2008 08:34:14 +0000 (08:34 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 2 Jul 2008 08:34:14 +0000 (08:34 +0000)
19 files changed:
ITS/AliITS.cxx
ITS/AliITSCalibrationSDD.cxx
ITS/AliITSCalibrationSDD.h
ITS/AliITSClusterFinderSDD.cxx
ITS/AliITSClusterFinderV2SDD.cxx
ITS/AliITSDetTypeRec.cxx
ITS/AliITSDetTypeRec.h
ITS/AliITSDetTypeSim.cxx
ITS/AliITSDriftSpeedSDD.cxx
ITS/AliITSDriftSpeedSDD.h
ITS/AliITSresponseSDD.cxx
ITS/AliITSresponseSDD.h
ITS/AliITSsegmentationSDD.cxx
ITS/AliITSsimulationSDD.cxx
ITS/AliITSvBeamTestITS04.cxx
ITS/AliITSvSDD03.cxx
ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root
ITS/Calib/DDLMapSDD/Run0_9999999_v0_s0.root
ITS/Calib/RespSDD/Run0_999999999_v0_s0.root

index 3bdf481..40be112 100644 (file)
@@ -91,7 +91,6 @@ the AliITS class.
 #include "AliITSRawStreamSPD.h"
 #include "AliITSRawStreamSSD.h"
 #include "AliITSRawStreamSDD.h"
-#include "AliITSresponseSDD.h" 
 #include "AliRawReader.h"
 #include "AliRun.h"
 #include "AliLog.h"
@@ -1199,11 +1198,6 @@ Bool_t AliITS::Raw2SDigits(AliRawReader* rawReader)
        Int_t index  = npx * anode + time;
 
        if (module >= size) continue;
-       /* 8->10 bit expansion is done in AliITSRawStreamSDD
-       // 8bit -> 10 bit
-       AliITSresponseSDD *resSDD = (AliITSresponseSDD*) fDetTypeSim->GetResponse(1);
-       Int_t signal10 = resSDD->Convert8to10(signal);  // signal is a 8 bit value (if the compression is active)
-       */
        last = modA[module]->GetEntries();
        TClonesArray& dum = *modA[module];
        new (dum[last]) AliITSpListItem(-1, -1, module, index, Double_t(signal10));
index a1c25e0..b0d82ff 100644 (file)
@@ -37,6 +37,7 @@ ClassImp(AliITSCalibrationSDD)
 
 AliITSCalibrationSDD::AliITSCalibrationSDD():
 AliITSCalibration(),
+fZeroSupp(kTRUE),
 fDeadChips(0),
 fDeadChannels(0),
 fIsBad(kFALSE),
@@ -74,6 +75,7 @@ fDrSpeed1(0)
 //______________________________________________________________________
 AliITSCalibrationSDD::AliITSCalibrationSDD(const char *dataType):
 AliITSCalibration(),
+fZeroSupp(kTRUE),
 fDeadChips(0),
 fDeadChannels(0),
 fIsBad(kFALSE),
index 278e9ec..031ca23 100644 (file)
@@ -7,13 +7,12 @@
 /* $Id$ */
 
 #include "AliITSCalibration.h"
-#include "AliITSresponseSDD.h"
 #include "AliITSsegmentationSDD.h"
 #include "TArrayI.h"
 
 class AliITSMapSDD;
 class AliITSDriftSpeedArraySDD;
-class AliITSresponseSDD;
+
 ///////////////////////////////////////////////////////
 //  Response for SDD                                 //
 ///////////////////////////////////////////////////////
@@ -144,16 +143,14 @@ class AliITSCalibrationSDD : public AliITSCalibration {
     }
 
 
-    virtual Float_t GetTimeOffset() const {return ((AliITSresponseSDD*)fResponse)->TimeOffset();}
-    virtual Float_t GetADC2keV() const {return ((AliITSresponseSDD*)fResponse)->ADC2keV();}
     virtual Float_t GetDriftSpeedAtAnode(Float_t nAnode) const{
       if(fDrSpeed0==0 || fDrSpeed1==0) AliFatal("Drift speed not set\n");
       if(nAnode<256) return fDrSpeed0->GetDriftSpeed(0,nAnode);
       else return fDrSpeed1->GetDriftSpeed(0,nAnode-256);
     }
 
-    virtual void SetZeroSupp (const char *opt) {((AliITSresponseSDD*)fResponse)->SetZeroSupp(opt);} 
-    virtual const char *GetZeroSuppOption() const {return ((AliITSresponseSDD*)fResponse)->ZeroSuppOption();}
+    virtual void SetZeroSupp(Bool_t opt=kTRUE) {fZeroSupp=opt;}
+    virtual Bool_t GetZeroSupp() const {return fZeroSupp;}
 
     virtual Float_t GetDriftPath(Float_t time, Float_t xAnode) const {return time*GetDriftSpeedAtAnode(xAnode);}
     void GetCorrections(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg);
@@ -173,6 +170,7 @@ class AliITSCalibrationSDD : public AliITSCalibration {
     static const Float_t fgkBaselineDefault; // default for fBaseline
     static const Float_t fgkGainDefault; //default for gain
 
+    Bool_t fZeroSupp;    // zero suppression
     Int_t fDeadChips;                     // Number of dead chips
     Int_t fDeadChannels;                  // Number of dead channels
     Float_t fGain[fgkWings*fgkChips*fgkChannels];           //Array for channel gains
@@ -203,7 +201,7 @@ class AliITSCalibrationSDD : public AliITSCalibration {
     AliITSCalibrationSDD& operator=(const AliITSCalibrationSDD & /* source */); // ass. op.
 
 
-    ClassDef(AliITSCalibrationSDD,11) // SDD response 
+    ClassDef(AliITSCalibrationSDD,12) 
     
     };
 #endif
index 36d8518..96ee2e8 100644 (file)
@@ -82,13 +82,12 @@ void AliITSClusterFinderSDD::SetCutAmplitude(Int_t mod,Double_t nsigma){
     // set the signal threshold for cluster finder
     Double_t baseline,noiseAfterEl;
 
-    AliITSresponseSDD* res  = (AliITSresponseSDD*)((AliITSCalibrationSDD*)GetResp(mod))->GetResponse();
-    const char *option=res->ZeroSuppOption();
+    Bool_t isZeroSupp=GetResp(mod)->GetZeroSupp();
     Int_t nanodes = GetResp(mod)->Wings()*GetResp(mod)->Channels()*GetResp(mod)->Chips();
     fCutAmplitude.Set(nanodes);
     for(Int_t ian=0;ian<nanodes;ian++){
       noiseAfterEl = ((AliITSCalibrationSDD*)GetResp(mod))->GetNoiseAfterElectronics(ian);
-      if(strstr(option,"ZS")){ 
+      if(isZeroSupp){
        fCutAmplitude[ian] = (Int_t)(nsigma*noiseAfterEl);
       }
       else{
@@ -109,8 +108,7 @@ void AliITSClusterFinderSDD::Find1DClusters(){
     Double_t fTimeStep    = GetSeg()->Dpx(dummy);
     Double_t fSddLength   = GetSeg()->Dx();
     AliITSCalibrationSDD* cal = (AliITSCalibrationSDD*)GetResp(fModule);
-    AliITSresponseSDD* res  = (AliITSresponseSDD*)((AliITSCalibrationSDD*)GetResp(fModule))->GetResponse();
-    const char *option=res->ZeroSuppOption();
+    Bool_t isZeroSupp=cal->GetZeroSupp();
 
     // map the signal
     Map()->ClearMap();
@@ -196,7 +194,7 @@ void AliITSClusterFinderSDD::Find1DClusters(){
                                   
                    for(its=tstart; its<=tstop; its++) {
                         fadc=(float)Map()->GetSignal(idx,its);
-                       if(!(strstr(option,"ZS"))){
+                       if(!isZeroSupp){
                          Double_t baseline=GetResp(fModule)->GetBaseline(idx);
                          if(fadc>baseline) fadc -= baseline;
                          else fadc = 0.;
@@ -263,9 +261,7 @@ void AliITSClusterFinderSDD::Find1DClustersE(){
     Map()->ClearMap();
     Map()->SetThresholdArr( fCutAmplitude );
     Map()->FillMap2();
-
-    AliITSresponseSDD* res  = (AliITSresponseSDD*)cal->GetResponse();
-    const char *option=res->ZeroSuppOption();
+    Bool_t isZeroSupp=cal->GetZeroSupp();
 
     Int_t nClu = 0;
     //        cout << "Search  cluster... "<< endl;
@@ -297,7 +293,7 @@ void AliITSClusterFinderSDD::Find1DClustersE(){
                         nTsteps = 0;
                     } // end if on...
                     nTsteps++ ;
-                   if(!(strstr(option,"ZS"))){
+                   if(!isZeroSupp){
                      Double_t baseline=GetResp(fModule)->GetBaseline(idx);
                      if( fadc > baseline ) fadc -= baseline;
                      else fadc=0.;
@@ -708,8 +704,8 @@ void AliITSClusterFinderSDD::ResolveClusters(){
     Double_t anodePitch = GetSeg()->Dpz( dummy );
     Int_t electronics =1;//GetResp(fModule)->GetElectronics(); // 1 = PASCAL, 2 = OLA
     AliITSCalibrationSDD* cal = (AliITSCalibrationSDD*)GetResp(fModule);
-    AliITSresponseSDD* res  = (AliITSresponseSDD*)cal->GetResponse();
-    const char *option=res->ZeroSuppOption();
+    Bool_t isZeroSupp=cal->GetZeroSupp();
+
     
 
     for( Int_t j=0; j<nofClusters; j++ ){ 
@@ -737,7 +733,7 @@ void AliITSClusterFinderSDD::ResolveClusters(){
         for( Int_t ianode=astart; ianode<=astop; ianode++ ){
             for( Int_t itime=tstart; itime<=tstop; itime++ ){
                 Double_t fadc = Map()->GetSignal( ianode, itime );            
-               if(!(strstr(option,"ZS"))){
+               if(!isZeroSupp){
                  Double_t baseline=GetResp(fModule)->GetBaseline(ianode);
                  if( fadc > baseline ) fadc -= (Double_t)baseline;
                  else fadc = 0.;
index e4fd646..5331b4b 100644 (file)
@@ -31,6 +31,7 @@
 #include "AliRawReader.h"
 #include "AliITSRawStreamSDD.h"
 #include "AliITSCalibrationSDD.h"
+#include "AliITSresponseSDD.h"
 #include "AliITSDetTypeRec.h"
 #include "AliITSReconstructor.h"
 #include "AliITSsegmentationSDD.h"
@@ -217,13 +218,14 @@ FindClustersSDD(AliBin* bins[2], Int_t nMaxBin, Int_t nzBins,
        }
 
 
-       Float_t y=c.GetY(),z=c.GetZ(), q=c.GetQ();       
+       AliITSresponseSDD* rsdd = fDetTypeRec->GetResponseSDD();
+       Float_t y=c.GetY(),z=c.GetZ(), q=c.GetQ();
        y/=q; z/=q;
        Float_t zAnode=z-0.5;  // to have anode in range 0.-255. and centered on the mid of the pitch
        Float_t timebin=y-0.5;  // to have time bin in range 0.-255. amd centered on the mid of the bin
        if(s==1) zAnode += GetSeg()->NpzHalf();  // right side has anodes from 256. to 511.
        Float_t zdet = GetSeg()->GetLocalZFromAnode(zAnode);
-       Float_t driftTime = GetSeg()->GetDriftTimeFromTb(timebin) - cal->GetTimeOffset();
+       Float_t driftTime = GetSeg()->GetDriftTimeFromTb(timebin) - rsdd->GetTimeOffset();
        Float_t driftPathMicron = cal->GetDriftPath(driftTime,zAnode);
        const Double_t kMicronTocm = 1.0e-4; 
        Float_t xdet=(driftPathMicron-GetSeg()->Dx())*kMicronTocm; // xdet is negative
@@ -239,7 +241,7 @@ FindClustersSDD(AliBin* bins[2], Int_t nMaxBin, Int_t nzBins,
        y=trk[1];
        z=trk[2]; 
 
-       q/=cal->GetADC2keV();  //to have MPV 1 MIP = 86.4 KeV
+       q/=rsdd->GetADC2keV();  //to have MPV 1 MIP = 86.4 KeV
        Float_t hit[5] = {y, z, 0.0030*0.0030, 0.0020*0.0020, q};
        Int_t  info[3] = {maxj-minj+1, maxi-mini+1, fNlayer[fModule]};
        if (digits) {     
@@ -285,9 +287,8 @@ void AliITSClusterFinderV2SDD::RawdataToClusters(AliRawReader* rawReader,TClones
        AliError(Form("Calibration object not present for SDD module %d\n",iMod));
        continue;
       }
-      AliITSresponseSDD* res  = (AliITSresponseSDD*)cal->GetResponse();
-      const char *option=res->ZeroSuppOption();
-      if(strstr(option,"ZS")){ 
+      Bool_t isZeroSupp=cal->GetZeroSupp();
+      if(isZeroSupp){ 
        for(Int_t iSid=0; iSid<2; iSid++) inputSDD.SetZeroSuppLowThreshold(iMod-240,iSid,cal->GetZSLowThreshold(iSid));
       }else{
        for(Int_t iSid=0; iSid<2; iSid++) inputSDD.SetZeroSuppLowThreshold(iMod-240,iSid,0);
index 8663975..79f1e03 100644 (file)
@@ -79,6 +79,7 @@ fPreProcess(0),
 fPostProcess(0),
 fDigits(0),
 fDDLMapSDD(0),
+fRespSDD(0),
 fNdtype(0),
 fCtype(0),
 fNctype(0),
@@ -101,7 +102,6 @@ fFirstcall(kTRUE){
     fDigClassName[i]=0;
     fRecPointClassName[i]=0;
   }
-  fDDLMapSDD=new AliITSDDLModuleMapSDD();
   fNdtype = new Int_t[fgkNdettypes];
   fCtype = new TObjArray(fgkNdettypes);
   fNctype = new Int_t[fgkNdettypes];
@@ -132,6 +132,7 @@ fPreProcess(rec.fPreProcess),
 fPostProcess(rec.fPostProcess),
 fDigits(rec.fDigits),
 fDDLMapSDD(rec.fDDLMapSDD),
+fRespSDD(rec.fRespSDD),
 fNdtype(rec.fNdtype),
 fCtype(rec.fCtype),
 fNctype(rec.fNctype),
@@ -170,15 +171,15 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){
   if(fCalibration){
     if(!(AliCDBManager::Instance()->GetCacheFlag())) {
       AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSPD()))->GetResponse();    
-      AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSDD()))->GetResponse();
       AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(GetITSgeom()->GetStartSSD()))->GetResponse();
       if(rspd) delete rspd;
-      if(rsdd) delete rsdd;
       if(rssd) delete rssd;
       fCalibration->Delete();
       delete fCalibration;
       fCalibration = 0;
-    }
+      if(fRespSDD) delete fRespSDD;
+      if(fDDLMapSDD) delete fDDLMapSDD;
+   }
   }
   if(fSPDDead){
     if(!(AliCDBManager::Instance()->GetCacheFlag())) {
@@ -189,7 +190,6 @@ AliITSDetTypeRec::~AliITSDetTypeRec(){
   }  
   if(fPreProcess) delete fPreProcess;
   if(fPostProcess) delete fPostProcess;
-  if(fDDLMapSDD) delete fDDLMapSDD;
   if(fDigits){
     fDigits->Delete();
     delete fDigits;
@@ -558,14 +558,14 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     SetSPDDeadModel(i, cal);
   }
 
-  fDDLMapSDD->SetDDLMap(ddlsdd);
+  fDDLMapSDD=ddlsdd;
+  fRespSDD=pSDD;
   for(Int_t iddl=0; iddl<AliITSDDLModuleMapSDD::GetNDDLs(); iddl++){
     for(Int_t icar=0; icar<AliITSDDLModuleMapSDD::GetNModPerDDL();icar++){
       Int_t iMod=fDDLMapSDD->GetModuleNumber(iddl,icar);
       if(iMod==-1) continue;
       Int_t i=iMod - fgkDefaultNModulesSPD;
       cal = (AliITSCalibration*) calSDD->At(i);
-      cal->SetResponse((AliITSresponse*)pSDD);
       Int_t i0=2*i;
       Int_t i1=1+2*i;
       AliITSDriftSpeedArraySDD* arr0 = (AliITSDriftSpeedArraySDD*) drSp->At(i0);
index 6613392..25d02b5 100644 (file)
@@ -15,6 +15,7 @@ $Id$
 #include <TObjArray.h>
 #include <TClonesArray.h>
 #include "AliITSDDLModuleMapSDD.h"
+#include "AliITSresponseSDD.h"
 #include "AliITSgeom.h"
 
 class TTree;
@@ -25,6 +26,7 @@ class TBranch;
 
 class AliITSsegmentation;
 class AliITSCalibration;
+class AliITSresponseSDD;
 class AliITSClusterFinder;
 class AliITSRawCluster;
 class AliITSRecPoint;
@@ -55,6 +57,7 @@ class AliITSDetTypeRec : public TObject {
     virtual AliITSCalibration* GetSPDDeadModel(Int_t iMod);
     virtual AliITSClusterFinder* GetReconstructionModel(Int_t dettype);
     virtual AliITSDDLModuleMapSDD* GetDDLModuleMapSDD() const { return fDDLMapSDD;}
+    virtual AliITSresponseSDD* GetResponseSDD() const { return fRespSDD;}
 
     virtual void SetDigitClassName(Int_t i,Char_t *digit) 
       {fDigClassName[i]=digit;}
@@ -115,6 +118,7 @@ class AliITSDetTypeRec : public TObject {
     TObjArray    *fPostProcess;   //! [] e.g. find primary vertex
     TObjArray    *fDigits;        //! [NMod][NDigits]
     AliITSDDLModuleMapSDD *fDDLMapSDD; //! mapping DDL/module -> SDD module number
+    AliITSresponseSDD *fRespSDD;  //! SDD response parameters 
     Int_t        *fNdtype;        //! detector types  
     Char_t*       fClusterClassName[3]; //! String with Cluster class name
     Char_t*       fDigClassName[3];     //! String with digit class name.
@@ -129,7 +133,7 @@ class AliITSDetTypeRec : public TObject {
     TString fSelectedVertexer; // Vertexer selected in CreateVertexer
     Bool_t fFirstcall;         //! flag
 
-    ClassDef(AliITSDetTypeRec,9) // ITS Reconstruction structure
+    ClassDef(AliITSDetTypeRec,10) // ITS Reconstruction structure
 };
 
 #endif
index 1b98518..4e63042 100644 (file)
@@ -42,7 +42,6 @@
 #include "AliITSdigitSSD.h"
 #include "AliITSDetTypeSim.h"
 #include "AliITSpListItem.h"
-#include "AliITSresponseSDD.h"
 #include "AliITSCalibrationSDD.h"
 #include "AliITSMapSDD.h"
 #include "AliITSDriftSpeedArraySDD.h"
@@ -131,12 +130,9 @@ AliITSDetTypeSim::~AliITSDetTypeSim(){
     if(fCalibration && fRunNumber<0){
        AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(
                                GetITSgeom()->GetStartSPD()))->GetResponse();
-       AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(
-                               GetITSgeom()->GetStartSDD()))->GetResponse();
        AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(
                                GetITSgeom()->GetStartSSD()))->GetResponse();
        if(rspd) delete rspd;
-       if(rsdd) delete rsdd;
        if(rssd) delete rssd;
        fCalibration->Delete();
        delete fCalibration;
@@ -346,12 +342,9 @@ void AliITSDetTypeSim::ResetCalibrationArray(){
     if(fCalibration && fRunNumber<0){  // if fRunNumber<0 fCalibration is owner
        AliITSresponse* rspd = ((AliITSCalibration*)fCalibration->At(
                                 GetITSgeom()->GetStartSPD()))->GetResponse();
-       AliITSresponse* rsdd = ((AliITSCalibration*)fCalibration->At(
-                                GetITSgeom()->GetStartSDD()))->GetResponse();
        AliITSresponse* rssd = ((AliITSCalibration*)fCalibration->At(
                                 GetITSgeom()->GetStartSSD()))->GetResponse();
        if(rspd) delete rspd;
-       if(rsdd) delete rsdd;
        if(rssd) delete rssd;
        fCalibration->Clear();
     }else if (fCalibration && fRunNumber>=0){
@@ -435,17 +428,16 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
 
   AliCDBEntry *entry2SPD = AliCDBManager::Instance()->Get("ITS/Calib/RespSPD", run);
-  AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD", run);
   AliCDBEntry *entry2SSD = AliCDBManager::Instance()->Get("ITS/Calib/RespSSD", run);
 
   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
-     !entry2SPD || !entry2SDD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD ||!mapTSDD){
+     !entry2SPD || !entry2SSD || !drSpSDD || !ddlMapSDD || !mapASDD ||!mapTSDD){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
 
 //   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
-//      !entry2SPD || !entry2SDD || !entry2SSD){
+//      !entry2SPD || !entry2SSD){
 //     AliFatal("Calibration object retrieval failed! ");
 //     return kFALSE;
 //   }         
@@ -462,10 +454,6 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   if(!isCacheActive)entrySDD->SetObject(NULL);
   entrySDD->SetOwner(kTRUE);
 
-  AliITSresponseSDD *pSDD = (AliITSresponseSDD*)entry2SDD->GetObject();
-  if(!isCacheActive)entry2SDD->SetObject(NULL);
-  entry2SDD->SetOwner(kTRUE);
-
   TObjArray *drSp = (TObjArray *)drSpSDD->GetObject();
   if(!isCacheActive)drSpSDD->SetObject(NULL);
   drSpSDD->SetOwner(kTRUE);
@@ -512,7 +500,6 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     delete entryGainSSD;
     delete entryBadChannelsSSD;
     delete entry2SPD;
-    delete entry2SDD;
     delete entry2SSD;
     delete mapASDD;   
     delete mapTSDD;
@@ -522,7 +509,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   
   AliCDBManager::Instance()->SetCacheFlag(origCacheStatus);
 
-  if ((!pSPD)||(!pSDD)||(!pSSD) || (!calSPD) || (!calSDD) || (!drSp) || (!ddlsdd)
+  if ((!pSPD)||(!pSSD) || (!calSPD) || (!calSDD) || (!drSp) || (!ddlsdd)
       || (!mapAn) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badchannelsSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
@@ -548,7 +535,6 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     fDDLMapSDD->FindInDDLMap(iMod,iddl,icarlos);
     if(iddl<0){ 
       AliITSCalibrationSDD* calsdddead=new AliITSCalibrationSDD();
-      calsdddead->SetResponse(pSDD);
       calsdddead->SetBad();      
       AliITSDriftSpeedSDD* driftspdef = new AliITSDriftSpeedSDD();
       AliITSDriftSpeedArraySDD* arrdrsp=new AliITSDriftSpeedArraySDD(1);
@@ -559,7 +545,6 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
       AliWarning(Form("SDD module %d not present in DDL map: set it as dead",iMod));
     }else{
       cal = (AliITSCalibration*) calSDD->At(i);
-      cal->SetResponse(pSDD);
       Int_t i0=2*i;
       Int_t i1=1+2*i;
       AliITSDriftSpeedArraySDD* arr0 = (AliITSDriftSpeedArraySDD*) drSp->At(i0);
index c5c8d2a..fbfc127 100644 (file)
 ///////////////////////////////////////////////////////////////////
 
 #include "AliITSDriftSpeedSDD.h"
-#include "AliITSresponseSDD.h"
 #include "AliLog.h"
 
+const Float_t AliITSDriftSpeedSDD::fgkDriftSpeedDefault = 7.3;
+
 ClassImp(AliITSDriftSpeedSDD)
 //______________________________________________________________________
 AliITSDriftSpeedSDD::AliITSDriftSpeedSDD():
@@ -34,7 +35,7 @@ fEvNum(0),
 fTimestamp(0),
 fPolDeg(0){
   // default constructor
-  fDriftSpeedParam[0]=AliITSresponseSDD::DefaultDriftSpeed();
+  fDriftSpeedParam[0]=fgkDriftSpeedDefault;
   for(Int_t i=1; i<fgkMaxPolDeg+1; i++) fDriftSpeedParam[i]=0;
 }
 //______________________________________________________________________
index 278977f..93973ba 100644 (file)
@@ -24,6 +24,7 @@ class AliITSDriftSpeedSDD : public TObject {
   AliITSDriftSpeedSDD(const AliITSDriftSpeedSDD& drSpeed);
   virtual ~AliITSDriftSpeedSDD(){};
 
+  static Float_t DefaultDriftSpeed() {return fgkDriftSpeedDefault;}
   virtual Bool_t IsEqual(const TObject *obj) const 
     {return fEvNum == ((AliITSDriftSpeedSDD*)obj)->fEvNum;}
   virtual Bool_t      IsSortable() const { return kTRUE; }
@@ -44,12 +45,14 @@ class AliITSDriftSpeedSDD : public TObject {
   }
 
  protected:
+  static const Float_t fgkDriftSpeedDefault; // default for drift speed
   static const UShort_t fgkMaxPolDeg=5; // max. degree of the poly fit
+
   Int_t fEvNum;  // event number of injector event
   UInt_t fTimestamp; // event timestamp
   Char_t fPolDeg;    // degree of the ploy fit to drift speed vs. anode
                      // saved as char since 1 byte is enough
   Float_t fDriftSpeedParam[fgkMaxPolDeg+1];  // coefficients of the poly fit
-  ClassDef(AliITSDriftSpeedSDD,3);
+  ClassDef(AliITSDriftSpeedSDD,4);
 };
 #endif
index f89fbfc..27bb991 100644 (file)
@@ -28,8 +28,6 @@
 
 #include "AliITSresponseSDD.h"
 
-const TString AliITSresponseSDD::fgkOptionDefault = "ZS";
-const Float_t AliITSresponseSDD::fgkDriftSpeedDefault = 7.3;
 const Float_t AliITSresponseSDD::fgkTimeOffsetDefault = 54.30;
 const Float_t AliITSresponseSDD::fgkADC2keVDefault = 5.243;
 
@@ -37,12 +35,10 @@ ClassImp(AliITSresponseSDD)
 
 //_________________________________________________________________________
 AliITSresponseSDD::AliITSresponseSDD():
-AliITSresponse(),
+TObject(),
 fTimeOffset(fgkTimeOffsetDefault),
-fADC2keV(fgkADC2keVDefault),
-fOption(){
+fADC2keV(fgkADC2keVDefault){
   // default constructor
-  SetZeroSupp(fgkOptionDefault);
 }
 
 
index 4d1671d..d280f7a 100644 (file)
@@ -5,8 +5,7 @@
  * See cxx source for full Copyright notice                               */
  
 
-#include <AliITSresponse.h>
-#include <TArrayF.h>
+#include <TObject.h>
 
 /* $Id$ */
 
 //  for all the modules.                                   //    
 ///////////////////////////////////////////////////////////// 
 
-class AliITSresponseSDD : public AliITSresponse {
+class AliITSresponseSDD : public TObject {
   public:
 
     AliITSresponseSDD();
     virtual ~AliITSresponseSDD(){};
 
-    static Float_t DefaultDriftSpeed() {return fgkDriftSpeedDefault;}
 
     virtual void SetTimeOffset(Float_t to){fTimeOffset = to;}
-    virtual Float_t TimeOffset()const {return fTimeOffset;}
+    virtual Float_t GetTimeOffset()const {return fTimeOffset;}
     static Float_t DefaultTimeOffset() {return fgkTimeOffsetDefault;}
 
     virtual void SetADC2keV(Float_t conv){fADC2keV=conv;}
-    virtual Float_t ADC2keV()const {return fADC2keV;}
+    virtual Float_t GetADC2keV()const {return fADC2keV;}
     static Float_t DefaulttADC2keV() {return fgkADC2keVDefault;}
 
  
-    void    SetZeroSupp (const char *opt) {
-       // Zero-suppression option - could be ZS or NOTSUPP
-       fOption=opt;}
-    const char *ZeroSuppOption() const {// Get zero-suppression option
-       return fOption.Data();}
-    // Detector type response methods
 
  protected:
 
-    static const TString fgkOptionDefault; // default for fOption
-    static const Float_t fgkDriftSpeedDefault; // default for drift speed
     static const Float_t fgkTimeOffsetDefault; // default for fTimeOffset
     static const Float_t fgkADC2keVDefault; // default for fADC2keV
 
     Float_t  fTimeOffset;     // Time offset due to electronic delays 
     Float_t  fADC2keV;        // Conversion factor from ADC to keV
-    TString    fOption;        // Zero-suppresion option (ZS or non-ZS)
 
  private:
 
    AliITSresponseSDD(const AliITSresponseSDD &ob); // copy constructor
    AliITSresponseSDD& operator=(const AliITSresponseSDD & /* source */); // ass. op.
 
-    ClassDef(AliITSresponseSDD,13) // Base response class 
+    ClassDef(AliITSresponseSDD,14) 
     
     };
 #endif
index 0756d45..b870e79 100644 (file)
@@ -18,7 +18,7 @@
 #include <TGeoVolume.h>
 #include <TGeoBBox.h>
 #include "AliITSsegmentationSDD.h"
-#include "AliITSresponseSDD.h"
+#include "AliITSDriftSpeedSDD.h"
 
 /////////////////////////////////////////////////////////////////////////////
 // Segmentation class for drift detectors                                  //
@@ -123,7 +123,7 @@ fSetDriftSpeed(0){
 //----------------------------------------------------------------------
 void AliITSsegmentationSDD::Init(){
 // Standard initilisation routine
-   fDriftSpeed=AliITSresponseSDD::DefaultDriftSpeed();
+   fDriftSpeed=AliITSDriftSpeedSDD::DefaultDriftSpeed();
    fCorr=0;
    SetDetSize(fgkDxDefault,fgkDzDefault,fgkDyDefault);
    SetPadSize(fgkPitchDefault,fgkClockDefault);
index aa8848a..7dd42fb 100644 (file)
@@ -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"
@@ -376,8 +375,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();
 }
 //______________________________________________________________________
index e2245cf..9dd394f 100644 (file)
@@ -412,7 +412,7 @@ void AliITSvBeamTestITS04::SetDefaults()
       seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD
                       s1->GetDz()*4.*kconv, // for now.
                       s1->GetDy()*4.*kconv); // x,z,y full width in microns.
-      seg1->SetDriftSpeed(AliITSresponseSDD::DefaultDriftSpeed());
+      seg1->SetDriftSpeed(AliITSDriftSpeedSDD::DefaultDriftSpeed());
       seg1->SetNPads(256,256);// Use AliITSgeomSDD for now
       SetSegmentationModel(kSDD,seg1);
     }
index 57da488..3460bf9 100644 (file)
@@ -808,14 +808,10 @@ void AliITSvSDD03::SetDefaults(){
 
     AliITSsegmentationSDD *seg1 = (AliITSsegmentationSDD*)
                         (GetITSgeom()->GetShape(kSDD));
-    seg1->SetDriftSpeed(AliITSresponseSDD::DefaultDriftSpeed());
+    seg1->SetDriftSpeed(AliITSDriftSpeedSDD::DefaultDriftSpeed());
     seg1->SetNPads(256,256);// Use AliITSgeomSDD for now
     SetSegmentationModel(kSDD,seg1);
     const char *kData1=(fDetTypeSim->GetCalibrationModel(GetITSgeom()->GetStartSDD()))->DataType();
-    const char *kopt=resp1->GetZeroSuppOption();
-    if((!strstr(kopt,"ZS"))  || strstr(kData1,"real") ){
-       fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigit");
-    } else fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigitSDD");
 
     // SSD  Layer 5
 
index 2d0736a..2f7e66c 100644 (file)
Binary files a/ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root and b/ITS/Calib/CalibSDD/Run0_9999999_v0_s0.root differ
index 1ced65e..86f470f 100644 (file)
Binary files a/ITS/Calib/DDLMapSDD/Run0_9999999_v0_s0.root and b/ITS/Calib/DDLMapSDD/Run0_9999999_v0_s0.root differ
index 8605149..f94a3f6 100644 (file)
Binary files a/ITS/Calib/RespSDD/Run0_999999999_v0_s0.root and b/ITS/Calib/RespSDD/Run0_999999999_v0_s0.root differ