Fixes to run embedding for SDD (F.Prino)
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Mar 2010 14:59:19 +0000 (14:59 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Mar 2010 14:59:19 +0000 (14:59 +0000)
ITS/AliITS.cxx
ITS/AliITSpList.cxx
ITS/AliITSpList.h
ITS/AliITSsimulationSDD.cxx
ITS/AliITSsimulationSDD.h

index 9a7b541..3153339 100644 (file)
@@ -87,6 +87,8 @@ the AliITS class.
 #include "AliITSRecPoint.h"
 #include "AliITSsegmentationSPD.h"
 #include "AliITSsegmentationSDD.h"
+#include "AliITSsimulationSDD.h"
+#include "AliITSCalibrationSDD.h"
 #include "AliITSsegmentationSSD.h"
 #include "AliITSRawStreamSPD.h"
 #include "AliITSRawStreamSSD.h"
@@ -1254,21 +1256,32 @@ Bool_t AliITS::Raw2SDigits(AliRawReader* rawReader)
     // 
     AliITSsegmentationSDD* segSDD = (AliITSsegmentationSDD*) fDetTypeSim->GetSegmentationModel(1);
     npx = segSDD->Npx();
+    Int_t scalef=AliITSsimulationSDD::ScaleFourier(segSDD);
+    Int_t firstSDD=AliITSgeomTGeo::GetModuleIndex(3,1,1);
+    Int_t firstSSD=AliITSgeomTGeo::GetModuleIndex(5,1,1);
+
     AliITSRawStream* inputSDD=AliITSRawStreamSDD::CreateRawStreamSDD(rawReader);
+    for(Int_t iMod=firstSDD; iMod<firstSSD; iMod++){
+      AliITSCalibrationSDD* cal = (AliITSCalibrationSDD*)fDetTypeSim->GetCalibrationModel(iMod);
+      Bool_t isZeroSupp=cal->GetZeroSupp();
+      if(isZeroSupp){ 
+       for(Int_t iSid=0; iSid<2; iSid++) inputSDD->SetZeroSuppLowThreshold(iMod-firstSDD,iSid,cal->GetZSLowThreshold(iSid));
+     }else{
+       for(Int_t iSid=0; iSid<2; iSid++) inputSDD->SetZeroSuppLowThreshold(iMod-firstSDD,iSid,0);
+      }
+    }
+
     AliITSDDLModuleMapSDD* ddlmap=fDetTypeSim->GetDDLModuleMapSDD();
     inputSDD->SetDDLModuleMap(ddlmap);
-    while(1){
-       Bool_t next  = inputSDD->Next();
-       if (!next) break;
-
+    while(inputSDD->Next()){
        if(inputSDD->IsCompletedModule()==kFALSE && 
           inputSDD->IsCompletedDDL()==kFALSE){
 
          Int_t module = inputSDD->GetModuleID();
-         Int_t anode  = inputSDD->GetCoord1();
+         Int_t anode  = inputSDD->GetCoord1()+segSDD->NpzHalf()*inputSDD->GetChannel();
          Int_t time   = inputSDD->GetCoord2();
          Int_t signal10 = inputSDD->GetSignal();
-         Int_t index  = npx * anode + time;
+         Int_t index = AliITSpList::GetIndex(anode,time,scalef*npx);
 
          if (module >= size) continue;
          last = modA[module]->GetEntries();
@@ -1346,4 +1359,3 @@ AliTriggerDetector* AliITS::CreateTriggerDetector() const {
   // create an AliITSTrigger object (and set trigger conditions as input)
   return new AliITSTrigger(fDetTypeSim->GetTriggerConditions());
 }
-
index 024683a..c9e85ee 100644 (file)
@@ -204,14 +204,3 @@ void AliITSpList::GetCell(Int_t index,Int_t &i,Int_t &j) const {
   j = index - fNj*i;
   return;
 }
-//______________________________________________________________________
-Int_t AliITSpList::GetIndex(Int_t i, Int_t j) const {
- // returns the TClonesArray index for a given set of map indexes.
-  if(i<0||i>=fNi || j<0||j>=fNj){
-    Warning("GetIndex","Index out of range 0<i=%d<%d and 0<0j=%d<%d",i,fNi,j,fNj);
-    return -1;
-  }
-  else {
-    return fNj*i+j;
-  }
-}
index 37be74a..f461275 100644 (file)
@@ -14,6 +14,7 @@
 // ***********************************************************************
 #include "TArrayI.h"
 #include "TClonesArray.h"
+#include "AliLog.h"
 #include "AliITSMap.h"
 #include "AliITSpListItem.h"
 
@@ -127,13 +128,18 @@ class AliITSpList: public AliITSMap {
     // Flags a hit. Not of relavence in this case.
     virtual void FlagHit(Int_t /* i */,Int_t /* j */){NotImplemented("FlagHit");}
     virtual void GetCell(Int_t index,Int_t &i,Int_t &j) const;
+ // GetIndex returns the TClonesArray index for a given set of map indexes.
+    static Int_t GetIndex(Int_t i,Int_t j,Int_t maxj){
+      return maxj*i+j;}
 
  private:
 
 // private methods
-    Int_t GetIndex(Int_t i,Int_t j) const;
+    Int_t GetIndex(Int_t i,Int_t j) const {
+      if(i<0||i>=fNi || j<0||j>=fNj){AliWarning(Form("Index out of range 0<i=%d<%d and 0<0j=%d<%d",i,fNi,j,fNj)); return -1;}
+      return GetIndex(i,j,fNj);}
     void NotImplemented(const char *method) const {if(gDebug>0)
-         Warning(method,"This method is not implemented for this class");}
+       Warning(method,"This method is not implemented for this class");}
 // data members
     Int_t     fNi,fNj;   // The max index in i,j.
     AliITSpListItem *fa;       // array of pList items
index d3ce9b6..2ff48e0 100644 (file)
@@ -35,7 +35,6 @@
 #include "AliITShit.h"
 #include "AliITSpList.h"
 #include "AliITSCalibrationSDD.h"
-#include "AliITSsegmentationSDD.h"
 #include "AliITSsimulationSDD.h"
 #include "AliLog.h"
 #include "AliRun.h"
@@ -70,7 +69,6 @@ fNofMaps(0),
 fMaxNofSamples(0),
 fScaleSize(0){
     // Default constructor
-    SetScaleFourier();
     SetPerpendTracksFlag();
     SetCrosstalkFlag();
     SetDoFFT();
@@ -145,13 +143,12 @@ fScaleSize(0){
 void AliITSsimulationSDD::Init(){
     // Standard Constructor
 
-    SetScaleFourier();
+    AliITSsegmentationSDD* seg = (AliITSsegmentationSDD*)GetSegmentationModel(1);
+    fScaleSize = ScaleFourier(seg);
     SetPerpendTracksFlag();
     SetCrosstalkFlag();
     SetDoFFT();
 
-    AliITSsegmentationSDD* seg = (AliITSsegmentationSDD*)GetSegmentationModel(1);
-    if(seg->Npx()==128) fScaleSize=8;
     AliITSSimuParam* simpar = fDetType->GetSimuParam();
     fpList = new AliITSpList( seg->Npz(),
                               fScaleSize*seg->Npx() );
index bf63960..1fb339e 100644 (file)
@@ -12,7 +12,7 @@
 
 #include <TNtuple.h>
 #include "AliITSsimulation.h"
-
+#include "AliITSsegmentationSDD.h"
 class TH1F;
 class TFile;
 class TArrayI;
@@ -23,7 +23,6 @@ class AliITSMap;
 class AliITSMapA1;
 class AliITSMapA2;
 class AliITSetfSDD;
-class AliITSsegmentationSDD;
 class AliITSCalibration;
 class AliITSCalibrationSDD;
 
@@ -46,9 +45,8 @@ class AliITSsimulationSDD : public AliITSsimulation {
     // set pointer to segmentation object
     virtual void SetSegmentationModel(Int_t /*dt*/, AliITSsegmentation *seg){fDetType->SetSegmentationModel(1,seg);}
 
-    // set the scale size factor for the smples in FFT
-    virtual void SetScaleFourier(Int_t scale=4) {fScaleSize=scale;}
-    Int_t ScaleFourier() const {return fScaleSize;} // returns the scale factor
+    static Int_t ScaleFourier(const AliITSsegmentationSDD* seg) 
+    {if(seg->Npx()==128) {return 8;} else {return 4;}} // returns the scale factor
     // set perpendicular tracks flag
     virtual void SetPerpendTracksFlag(Bool_t flag=kFALSE) {fFlag=flag;}
     // returns perpendicular track flag.