add option "cc" to disable radial correction of clusters during
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 16 Jul 2010 13:01:28 +0000 (13:01 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 16 Jul 2010 13:01:28 +0000 (13:01 +0000)
reconstruction.
This option was asked in order to check influence of vd calibration
algorithms on dEdx slices.

TRD/AliTRDReconstructor.cxx
TRD/AliTRDReconstructor.h
TRD/AliTRDcluster.cxx
TRD/AliTRDcluster.h
TRD/AliTRDclusterizer.cxx

index 1150ed4..8b4ffee 100644 (file)
@@ -47,9 +47,10 @@ Char_t const * AliTRDReconstructor::fgSteerNames[kNsteer] = {
  ,"Write Clusters         "
  ,"Write Online Tracklets "
  ,"Stand Alone Tracking   "
- ,"HLT Mode               "
- ,"Process Online Tracklets"
- ,"Debug Streaming        "
+ ,"HLT Mode              "
+ ,"Process Online Trklts  "
+ ,"Debug Streaming       "
+ ,"Cl. Radial Correction  "
 };
 Char_t const * AliTRDReconstructor::fgSteerFlags[kNsteer] = {
   "dc"// digits conversion [false]
@@ -59,6 +60,7 @@ Char_t const * AliTRDReconstructor::fgSteerFlags[kNsteer] = {
  ,"hlt"// HLT reconstruction [false]
  ,"tp"// also use online tracklets for reconstruction [false]
  ,"deb"// Write debug stream [false]
+ ,"cc" // Cluster radial correction during reconstruction [true]
 };
 Char_t const * AliTRDReconstructor::fgTaskNames[AliTRDrecoParam::kTRDreconstructionTasks] = {
   "Clusterizer"
@@ -85,7 +87,8 @@ AliTRDReconstructor::AliTRDReconstructor()
   SETFLG(fSteerParam, kWriteClusters);
   // track seeding (stand alone tracking) [sa]
   SETFLG(fSteerParam, kSeeding);
-
+  // Cluster radial correction during reconstruction [cc]
+  SETFLG(fSteerParam, kClRadialCorr);
   memset(fDebugStream, 0, sizeof(TTreeSRedirector *) * AliTRDrecoParam::kTRDreconstructionTasks);
 }
 
index 2d78a37..0d960d2 100644 (file)
@@ -33,8 +33,9 @@ public:
     ,kHLT            = BIT(4)
     ,kProcTracklets  = BIT(5) // process online tracklets
     ,kDebug          = BIT(6)
-    ,kOwner          = BIT(7)
-    ,kNsteer         = 7       // number of tasks
+    ,kClRadialCorr   = BIT(7) // toggle radial correction in clusters
+    ,kOwner          = BIT(8)
+    ,kNsteer         = 8      // number of tasks
   };
   AliTRDReconstructor();
   virtual ~AliTRDReconstructor();
@@ -43,7 +44,7 @@ public:
 
   virtual void        ConvertDigits(AliRawReader *rawReader, TTree *digitsTree) const;
   virtual AliTracker* CreateTracker() const;
-  TTreeSRedirector*   GetDebugStream(AliTRDrecoParam::ETRDReconstructionTask task) const { return task < AliTRDrecoParam::kTRDreconstructionTasks ? fDebugStream[task] : 0x0; }
+  TTreeSRedirector*   GetDebugStream(AliTRDrecoParam::ETRDReconstructionTask task) const { return task < AliTRDrecoParam::kTRDreconstructionTasks ? fDebugStream[task] : NULL; }
 
   virtual void        FillESD(AliRawReader *, TTree *clusterTree, AliESDEvent *esd) const { FillESD((TTree * )NULL, clusterTree, esd);                    }
   virtual void        FillESD(TTree *digitsTree, TTree *clusterTree, AliESDEvent *esd) const;
@@ -62,6 +63,7 @@ public:
   Bool_t              IsSeeding() const          { return fSteerParam&kSeeding;}
   Bool_t              IsProcessingTracklets() const { return fSteerParam&kProcTracklets;}
   Bool_t              IsDebugStreaming() const { return fSteerParam&kDebug;}
+  Bool_t              UseClusterRadialCorrection() const { return fSteerParam&kClRadialCorr;}
 
   static void         Options(UInt_t steer=0);
   virtual void        Reconstruct(AliRawReader *rawReader, TTree *clusterTree) const;
index 211f154..a7673a1 100644 (file)
@@ -682,32 +682,10 @@ Float_t AliTRDcluster::GetXloc(Double_t t0, Double_t vd
   td -= 0.189;
 
   // apply fitted correction 
-  Float_t x = td*vd + GetXcorr(fLocalTimeBin);
+  Float_t x = td*vd + HasXcorr() ? GetXcorr(fLocalTimeBin) : 0.;
   if(x>0.&&x<.5*AliTRDgeometry::CamHght()+AliTRDgeometry::CdrHght()) SetInChamber();
 
   return x;
-
-/*
-  // calculate radial posion of clusters in the drift region
-
-  // invert drift time function
-  Double_t xM= AliTRDgeometry::CamHght()+AliTRDgeometry::CdrHght(),
-           x = vd*td + .5*AliTRDgeometry::CamHght(), 
-           t = cp->TimeStruct(vd, x, z), dx1=0.,dx2;
-  while(TMath::Abs(td-t)>1.e-4){ // convergence on 100ps
-    dx2 = vd*(td-t);
-    if(TMath::Abs(TMath::Abs(dx2)-TMath::Abs(dx1))<1.e-6){
-      x+=.5*dx2;
-      break;
-    } else x+=dx2;
-
-    if(x<0. || x>xM) return 0.;
-    t = cp->TimeStruct(vd, x, z);
-    dx1 = dx2;
-  }
-
-  return x-.5*AliTRDgeometry::CamHght();
-*/
 }
 
 //_____________________________________________________________________________
index f2b7009..6373fc4 100644 (file)
@@ -25,6 +25,7 @@ public:
    ,kLUT       = BIT(18)
    ,kGAUS      = BIT(19)
    ,kCOG       = BIT(20)
+   ,kXcorr     = BIT(21)  // steer efficient vd corrections
   };
   enum ETRDclusterMask { 
     kMaskedLeft   = 0
@@ -53,6 +54,7 @@ public:
           Bool_t    IsUsed() const                  { return IsClusterUsed();      }
           Bool_t    IsFivePad() const               { return TestBit(kFivePad);    }
   inline  Bool_t    IsRPhiMethod(ETRDclusterStatus m) const;
+          Bool_t    HasXcorr() const                { return TestBit(kXcorr);      }
 
           UChar_t   GetPadMaskedPosition() const    { return fClusterMasking & 7;  }
           UChar_t   GetPadMaskedStatus() const      { return fClusterMasking >> 3; }
@@ -96,6 +98,7 @@ public:
   void        SetPadMaskedStatus(UChar_t status);
   void        SetSigmaY2(Float_t s2, Float_t dt, Float_t exb, Float_t x0, Float_t z=-1., Float_t tgp=0.);
   inline void SetRPhiMethod(ETRDclusterStatus m);
+  void        SetXcorr(Bool_t xc = kTRUE)                 { SetBit(kXcorr,xc);                  }
 
   void        Use(Int_t u = 1)                            { SetBit(AliCluster::kUsed, u ? kTRUE : kFALSE); }
 
index 6bcd40a..2669c20 100644 (file)
@@ -1017,6 +1017,7 @@ void AliTRDclusterizer::CreateCluster(const MaxStruct &Max)
     cluster.SetPadMaskedPosition(maskPosition);
     cluster.SetPadMaskedStatus(GetPadStatus(Max.padStatus));
   }
+  cluster.SetXcorr(fReconstructor->UseClusterRadialCorrection());
 
   // Transform the local cluster coordinates into calibrated 
   // space point positions defined in the local tracking system.