HLT mode retrieved from the OCDB and used to set SDD raw data format in simulation...
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 29 Aug 2008 17:48:07 +0000 (17:48 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 29 Aug 2008 17:48:07 +0000 (17:48 +0000)
ITS/AliITS.cxx
ITS/AliITSClusterFinderV2SDD.cxx
ITS/AliITSDetTypeRec.cxx
ITS/AliITSDetTypeRec.h
ITS/AliITSDetTypeSim.cxx
ITS/AliITSDetTypeSim.h
ITS/AliITSHLTforSDD.h
ITS/AliITSRawStream.h

index 2adae89..2d112cc 100644 (file)
@@ -1077,8 +1077,10 @@ void AliITS::Digits2Raw(){
   }
   fDetTypeSim->SetTreeAddressD(digits,(Char_t*)GetName());
   AliITSDDLModuleMapSDD* ddlsdd=fDetTypeSim->GetDDLModuleMapSDD();
-
+  Bool_t isHLTmodeC=fDetTypeSim->IsHLTmodeC();
   AliITSDDLRawData rawWriter;
+  if(isHLTmodeC) rawWriter.SetUseCompressedSDDFormat(kTRUE);
+  else rawWriter.SetUseCompressedSDDFormat(kFALSE);
   //Verbose level
   // 0: Silent
   // 1: cout messages
index 5331b4b..2974037 100644 (file)
@@ -30,6 +30,7 @@
 #include "AliITSDetTypeRec.h"
 #include "AliRawReader.h"
 #include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
 #include "AliITSCalibrationSDD.h"
 #include "AliITSresponseSDD.h"
 #include "AliITSDetTypeRec.h"
@@ -275,9 +276,15 @@ void AliITSClusterFinderV2SDD::RawdataToClusters(AliRawReader* rawReader,TClones
   // This function creates ITS clusters from raw data
   //------------------------------------------------------------
   rawReader->Reset();
-  AliITSRawStreamSDD inputSDD(rawReader);
+  AliITSRawStream* inputSDD;
+  if(fDetTypeRec->IsHLTmodeC()==kTRUE){
+    inputSDD=new AliITSRawStreamSDDCompressed(rawReader);
+  }else{
+    inputSDD=new AliITSRawStreamSDD(rawReader);
+  }
+
   AliITSDDLModuleMapSDD *ddlmap=(AliITSDDLModuleMapSDD*)fDetTypeRec->GetDDLModuleMapSDD();
-  inputSDD.SetDDLModuleMap(ddlmap);
+  inputSDD->SetDDLModuleMap(ddlmap);
   for(Int_t iddl=0; iddl<AliITSDDLModuleMapSDD::GetNDDLs(); iddl++){
     for(Int_t icar=0; icar<AliITSDDLModuleMapSDD::GetNModPerDDL();icar++){
       Int_t iMod=ddlmap->GetModuleNumber(iddl,icar);
@@ -289,14 +296,14 @@ void AliITSClusterFinderV2SDD::RawdataToClusters(AliRawReader* rawReader,TClones
       }
       Bool_t isZeroSupp=cal->GetZeroSupp();
       if(isZeroSupp){ 
-       for(Int_t iSid=0; iSid<2; iSid++) inputSDD.SetZeroSuppLowThreshold(iMod-240,iSid,cal->GetZSLowThreshold(iSid));
+       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);
+       for(Int_t iSid=0; iSid<2; iSid++) inputSDD->SetZeroSuppLowThreshold(iMod-240,iSid,0);
       }
     }
   }
-  FindClustersSDD(&inputSDD,clusters);
-
+  FindClustersSDD(inputSDD,clusters);
+  delete inputSDD;
 }
 
 void AliITSClusterFinderV2SDD::FindClustersSDD(AliITSRawStream* input, 
index 34b511e..a0c8e80 100644 (file)
@@ -49,6 +49,7 @@
 #include "AliITSMapSDD.h"
 #include "AliITSDriftSpeedArraySDD.h"
 #include "AliITSDriftSpeedSDD.h"
+#include "AliITSHLTforSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSDv2.h"
 #include "AliITSGainSSDv2.h"
@@ -83,6 +84,7 @@ fPostProcess(0),
 fDigits(0),
 fDDLMapSDD(0),
 fRespSDD(0),
+fIsHLTmodeC(0),
 fNdtype(0),
 fCtype(0),
 fNctype(0),
@@ -138,6 +140,7 @@ fPostProcess(rec.fPostProcess),
 fDigits(rec.fDigits),
 fDDLMapSDD(rec.fDDLMapSDD),
 fRespSDD(rec.fRespSDD),
+fIsHLTmodeC(rec.fIsHLTmodeC),
 fNdtype(rec.fNdtype),
 fCtype(rec.fCtype),
 fNctype(rec.fNctype),
@@ -451,12 +454,13 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   AliCDBEntry *entry2SDD = AliCDBManager::Instance()->Get("ITS/Calib/RespSDD");
   AliCDBEntry *drSpSDD = AliCDBManager::Instance()->Get("ITS/Calib/DriftSpeedSDD");
   AliCDBEntry *ddlMapSDD = AliCDBManager::Instance()->Get("ITS/Calib/DDLMapSDD");
+  AliCDBEntry *hltforSDD = AliCDBManager::Instance()->Get("ITS/Calib/HLTforSDD");
 //   AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD");
   AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD");
 
   if(!entrySPD || !deadSPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || 
      !entryBadChannelsSSD || 
-     !entry2SDD || !drSpSDD || !ddlMapSDD || !mapTSDD ){
+     !entry2SDD || !drSpSDD || !ddlMapSDD || !hltforSDD || !mapTSDD ){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
@@ -486,6 +490,10 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
   if(!cacheStatus)ddlMapSDD->SetObject(NULL);
   ddlMapSDD->SetOwner(kTRUE);
 
+  AliITSHLTforSDD* hltsdd=(AliITSHLTforSDD*)hltforSDD->GetObject();
+  if(!cacheStatus)hltforSDD->SetObject(NULL);
+  hltforSDD->SetOwner(kTRUE);
+  
 //   TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
 //   if(!cacheStatus)mapASDD->SetObject(NULL);
 //   mapASDD->SetOwner(kTRUE);
@@ -541,13 +549,14 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
     delete entryBadChannelsSSD;
     delete entry2SDD;
     //delete mapASDD;
+    delete hltforSDD;
     delete mapTSDD;
     delete drSpSDD;
     delete ddlMapSDD;
   }
 
   if ((!pSDD)|| (!calSPD) || (!caldeadSPD) ||(!calSDD) || (!drSp) || (!ddlsdd)
-      || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badChannelsSSD)) {
+      || (!hltsdd) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badChannelsSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
@@ -566,6 +575,7 @@ Bool_t AliITSDetTypeRec::GetCalibration() {
 
   fDDLMapSDD=ddlsdd;
   fRespSDD=pSDD;
+  fIsHLTmodeC=hltsdd->IsHLTmodeC();
   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);
index 593fc61..42459a2 100644 (file)
@@ -60,6 +60,7 @@ class AliITSDetTypeRec : public TObject {
     virtual AliITSClusterFinder* GetReconstructionModel(Int_t dettype);
     virtual AliITSDDLModuleMapSDD* GetDDLModuleMapSDD() const { return fDDLMapSDD;}
     virtual AliITSresponseSDD* GetResponseSDD() const { return fRespSDD;}
+    virtual Bool_t IsHLTmodeC() const {return fIsHLTmodeC;}
 
     virtual void SetDigitClassName(Int_t i,Char_t *digit) 
       {fDigClassName[i]=digit;}
@@ -130,6 +131,7 @@ class AliITSDetTypeRec : public TObject {
     TObjArray    *fDigits;        //! [NMod][NDigits]
     AliITSDDLModuleMapSDD *fDDLMapSDD; //! mapping DDL/module -> SDD module number
     AliITSresponseSDD *fRespSDD;  //! SDD response parameters 
+    Bool_t        fIsHLTmodeC;    //! flag for HLT mode C status (used by SDD)
     Int_t        *fNdtype;        //! detector types  
     Char_t*       fClusterClassName[3]; //! String with Cluster class name
     Char_t*       fDigClassName[3];     //! String with digit class name.
@@ -144,7 +146,7 @@ class AliITSDetTypeRec : public TObject {
     TString fSelectedVertexer; // Vertexer selected in CreateVertexer
     Bool_t fFirstcall;         //! flag
 
-    ClassDef(AliITSDetTypeRec,10) // ITS Reconstruction structure
+    ClassDef(AliITSDetTypeRec,11) // ITS Reconstruction structure
 };
 
 #endif
index 15d3084..6ee14d2 100644 (file)
@@ -46,6 +46,7 @@
 #include "AliITSMapSDD.h"
 #include "AliITSDriftSpeedArraySDD.h"
 #include "AliITSDriftSpeedSDD.h"
+#include "AliITSHLTforSDD.h"
 #include "AliITSCalibrationSSD.h"
 #include "AliITSNoiseSSDv2.h"
 #include "AliITSGainSSDv2.h"
@@ -90,7 +91,8 @@ fHitClassName(), // String with Hit class name.
 fSDigClassName(),// String with SDigit class name.
 fDigClassName(), // String with digit class name.
 fLoader(0),      // local pointer to loader
-fFirstcall(kTRUE){ // flag
+fFirstcall(kTRUE),
+fIsHLTmodeC(0){ // flag
     // Default Constructor
     // Inputs:
     //    none.
@@ -181,7 +183,8 @@ fHitClassName(source.fHitClassName), // String with Hit class name.
 fSDigClassName(source.fSDigClassName),// String with SDigit class name.
 fDigClassName(), // String with digit class name.
 fLoader(source.fLoader),      // local pointer to loader
-fFirstcall(source.fFirstcall)
+fFirstcall(source.fFirstcall),
+fIsHLTmodeC(source.fIsHLTmodeC)
 {
     // Copy Constructor for object AliITSDetTypeSim not allowed
   for(Int_t i=0;i<fgkNdettypes;i++){
@@ -436,6 +439,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   AliCDBEntry *entrySDD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSDD", run);
   AliCDBEntry *drSpSDD = AliCDBManager::Instance()->Get("ITS/Calib/DriftSpeedSDD",run);
   AliCDBEntry *ddlMapSDD = AliCDBManager::Instance()->Get("ITS/Calib/DDLMapSDD",run);
+  AliCDBEntry *hltforSDD = AliCDBManager::Instance()->Get("ITS/Calib/HLTforSDD");
   //AliCDBEntry *mapASDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsAnodeSDD",run);
   AliCDBEntry *mapTSDD = AliCDBManager::Instance()->Get("ITS/Calib/MapsTimeSDD",run);
   // AliCDBEntry *entrySSD = AliCDBManager::Instance()->Get("ITS/Calib/CalibSSD", run);
@@ -444,7 +448,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   AliCDBEntry *entryBadChannelsSSD = AliCDBManager::Instance()->Get("ITS/Calib/BadChannelsSSD");
 
   if(!entrySPD || !entrySDD || !entryNoiseSSD || !entryGainSSD || !entryBadChannelsSSD || 
-      !drSpSDD || !ddlMapSDD || !mapTSDD){
+      !drSpSDD || !ddlMapSDD || !hltforSDD || !mapTSDD){
     AliFatal("Calibration object retrieval failed! ");
     return kFALSE;
   }    
@@ -467,6 +471,10 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   if(!isCacheActive)ddlMapSDD->SetObject(NULL);
   ddlMapSDD->SetOwner(kTRUE);
 
+  AliITSHLTforSDD* hltsdd=(AliITSHLTforSDD*)hltforSDD->GetObject();
+  if(!isCacheActive)hltforSDD->SetObject(NULL);
+  hltforSDD->SetOwner(kTRUE);
+
 //   TObjArray *mapAn = (TObjArray *)mapASDD->GetObject();
 //   if(!isCacheActive)mapASDD->SetObject(NULL);
 //   mapASDD->SetOwner(kTRUE);
@@ -539,6 +547,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
     delete entryGainSSD;
     delete entryBadChannelsSSD;
 //    delete mapASDD;   
+    delete hltforSDD;
     delete mapTSDD;
     delete drSpSDD;
     delete ddlMapSDD;
@@ -547,7 +556,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   AliCDBManager::Instance()->SetCacheFlag(origCacheStatus);
 
   if ((!calSPD) || (!calSDD) || (!drSp) || (!ddlsdd)
-      || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badChannelsSSD)) {
+      || (!hltsdd) || (!mapT) || (!noiseSSD)|| (!gainSSD)|| (!badChannelsSSD)) {
     AliWarning("Can not get calibration from calibration database !");
     return kFALSE;
   }
@@ -564,6 +573,7 @@ Bool_t AliITSDetTypeSim::GetCalibration() {
   }
 
   fDDLMapSDD->SetDDLMap(ddlsdd);
+  fIsHLTmodeC=hltsdd->IsHLTmodeC();
 
   for (Int_t i=0; i<fgkDefaultNModulesSDD; i++) {
     Int_t iddl,icarlos;
index 2471747..ba5119f 100644 (file)
@@ -67,6 +67,7 @@ class AliITSDetTypeSim : public TObject {
     }
     virtual AliITSSimuParam* GetSimuParam() const {return fSimuPar;}
 
+    virtual Bool_t IsHLTmodeC() const {return fIsHLTmodeC;}
     virtual AliITSDDLModuleMapSDD* GetDDLModuleMapSDD()const { return fDDLMapSDD;}
     TObjArray* GetCalibrationArray() const {return fCalibration;}
     TObjArray* GetSegmentation() const {return fSegmentation;}
@@ -143,8 +144,9 @@ class AliITSDetTypeSim : public TObject {
     Char_t*       fDigClassName[3]; //! String with digit class name.
     AliITSLoader* fLoader;          //! loader  
     Bool_t        fFirstcall;       //! flag
+    Bool_t        fIsHLTmodeC;    //! flag for HLT mode C status (used by SDD)
     
-    ClassDef(AliITSDetTypeSim,7) // ITS Simulation structure
+    ClassDef(AliITSDetTypeSim,8) // ITS Simulation structure
  
 };
 
index 589e72e..3271f18 100644 (file)
@@ -26,7 +26,7 @@ class AliITSHLTforSDD : public TObject {
   virtual ~AliITSHLTforSDD(){};
 
   void SetHLTmodeC(Bool_t isHLTmodC){fHLTmodeC=isHLTmodC;}
-  Bool_t IsHLTmodeC(){return fHLTmodeC;}
+  Bool_t IsHLTmodeC() const {return fHLTmodeC;}
 
 
  protected:
index 8f5a7e7..b4e5bc7 100644 (file)
@@ -12,6 +12,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <TObject.h>
+#include "AliITSDDLModuleMapSDD.h"
+#include "AliLog.h"
 
 class AliRawReader;
 
@@ -32,6 +34,14 @@ class AliITSRawStream: public TObject {
     Int_t            GetCoord2() const {return fCoord2;};
     Int_t            GetSignal() const {return fSignal;};
     virtual Bool_t   IsCompletedModule() const {return fCompletedModule;}; // to be implemented in derived class
+    virtual void     SetDDLModuleMap(AliITSDDLModuleMapSDD* /*ddlsdd*/){
+      AliError("This method must be implemented in a derived class");
+    };
+    virtual void     SetZeroSuppLowThreshold(Int_t /*iMod*/, Int_t /*iSid*/, Int_t /*th*/) {
+      AliError("This method must be implemented in a derived class");
+    };
+
+
   protected :
     AliRawReader*    fRawReader;    // object for reading the raw data