Adding the possibility to rotate by a given angle the inner layer clusters of the...
authormasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 20 Sep 2010 07:51:46 +0000 (07:51 +0000)
committermasera <masera@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 20 Sep 2010 07:51:46 +0000 (07:51 +0000)
ITS/AliITSMultReconstructor.cxx
ITS/AliITSMultReconstructor.h
ITS/AliITSRecoParam.cxx
ITS/AliITSRecoParam.h

index b05ee43..03356ba 100644 (file)
@@ -113,6 +113,7 @@ fPhiShift(0),
 fRemoveClustersFromOverlaps(0),
 fPhiOverlapCut(0),
 fZetaOverlapCut(0),
+fPhiRotationAngle(0),
 //
 fCutPxDrSPDin(0.1),
 fCutPxDrSPDout(0.15),
@@ -161,6 +162,7 @@ fhphiClustersLay1(0){
     SetRemoveClustersFromOverlaps(AliITSReconstructor::GetRecoParam()->GetTrackleterRemoveClustersFromOverlaps());
     SetPhiOverlapCut(AliITSReconstructor::GetRecoParam()->GetTrackleterPhiOverlapCut());
     SetZetaOverlapCut(AliITSReconstructor::GetRecoParam()->GetTrackleterZetaOverlapCut());
+    SetPhiRotationAngle(AliITSReconstructor::GetRecoParam()->GetTrackleterPhiRotationAngle());
     //
     SetCutPxDrSPDin(AliITSReconstructor::GetRecoParam()->GetMultCutPxDrSPDin());
     SetCutPxDrSPDout(AliITSReconstructor::GetRecoParam()->GetMultCutPxDrSPDout());
@@ -190,6 +192,8 @@ fhphiClustersLay1(0){
     SetRemoveClustersFromOverlaps();
     SetPhiOverlapCut();
     SetZetaOverlapCut();
+    SetPhiRotationAngle();
+
     //
     SetCutPxDrSPDin();
     SetCutPxDrSPDout();
@@ -266,6 +270,7 @@ fPhiShift(0),
 fRemoveClustersFromOverlaps(0),
 fPhiOverlapCut(0),
 fZetaOverlapCut(0),
+fPhiRotationAngle(0),
 //
 fCutPxDrSPDin(0.1),
 fCutPxDrSPDout(0.15),
@@ -419,7 +424,8 @@ void AliITSMultReconstructor::FindTracklets(const Float_t *vtx)
   // - calls LoadClusterArrays that finds the position of the clusters
   //   (in global coord) 
   // - convert the cluster coordinates to theta, phi (seen from the
-  //   interaction vertex). 
+  //   interaction vertex). Clusters in the inner layer can be now
+  //   rotated for combinatorial studies 
   // - makes an array of tracklets 
   //   
   // After this method has been called, the clusters of the two layers
@@ -483,7 +489,7 @@ void AliITSMultReconstructor::FindTracklets(const Float_t *vtx)
     
     clPar[kClTh] = TMath::ACos(z/r);                   // Store Theta
     clPar[kClPh] = TMath::Pi() + TMath::ATan2(-y,-x);  // Store Phi
-    
+    clPar[kClPh] = clPar[kClPh] + fPhiRotationAngle;//rotation of inner layer for comb studies  
     if (fHistOn) {
       Float_t eta = clPar[kClTh];
       eta= TMath::Tan(eta/2.);
@@ -751,7 +757,6 @@ void AliITSMultReconstructor::LoadClusterArrays(TTree* itsClusterTree)
   // RS: This method was strongly modified wrt original. In order to have the same numbering 
   // of clusters as in the ITS reco I had to introduce sorting in Z
   // Also note that now the clusters data are stored not in float[6] attached to float**, but in 1-D array
-  
   AliDebug(1,"Loading clusters and cluster-fired chips ...");
   
   fNClustersLay1 = 0;
index a9e643f..0c90912 100644 (file)
@@ -61,6 +61,7 @@ public:
   void SetRemoveClustersFromOverlaps(Bool_t b = kFALSE) {fRemoveClustersFromOverlaps = b;}
   void SetPhiOverlapCut(Float_t w=0.005) {fPhiOverlapCut=w;}
   void SetZetaOverlapCut(Float_t w=0.05) {fZetaOverlapCut=w;}
+  void SetPhiRotationAngle(Float_t w=0.0) {fPhiRotationAngle=w;}
 
   Int_t GetNClustersLayer1() const {return fNClustersLay1;}
   Int_t GetNClustersLayer2() const {return fNClustersLay2;}
@@ -156,6 +157,7 @@ protected:
   Bool_t        fRemoveClustersFromOverlaps;   // Option to skip clusters in the overlaps
   Float_t       fPhiOverlapCut;                // Fiducial window in phi for overlap cut
   Float_t       fZetaOverlapCut;               // Fiducial window in eta for overlap cut
+  Float_t       fPhiRotationAngle;             // Angle to rotate the inner layer cluster for combinatorial reco only 
 
   // cuts for secondaries identification
   Float_t       fCutPxDrSPDin;                 // max P*DR for primaries involving at least 1 SPD
@@ -200,7 +202,7 @@ protected:
 
   void LoadClusterArrays(TTree* tree);
 
-  ClassDef(AliITSMultReconstructor,8)
+  ClassDef(AliITSMultReconstructor,9)
 };
 
 #endif
index 0ea2de0..0cad325 100644 (file)
@@ -170,6 +170,7 @@ fTrackleterPhiShift(0.0045),
 fTrackleterRemoveClustersFromOverlaps(kFALSE),
 fTrackleterPhiOverlapCut(0.005),
 fTrackleterZetaOverlapCut(0.05),
+fTrackleterPhiRotationAngle(0.0),
 fUseCosmicRunShiftsSSD(kFALSE),
 fSPDRemoveNoisyFlag(kTRUE),
 fSPDRemoveDeadFlag(kTRUE),
index 418560e..73645f0 100644 (file)
@@ -349,6 +349,8 @@ class AliITSRecoParam : public AliDetectorRecoParam
   void    SetTrackleterZetaOverlapCut(Float_t w=0.05) {fTrackleterZetaOverlapCut=w;}
   Float_t GetTrackleterPhiOverlapCut() const {return fTrackleterPhiOverlapCut;}
   Float_t GetTrackleterZetaOverlapCut() const {return fTrackleterZetaOverlapCut;}
+  void    SetTrackleterPhiRotationAngle(Float_t w=0.0) {fTrackleterPhiRotationAngle=w;}
+  Float_t GetTrackleterPhiRotationAngle() const {return fTrackleterPhiRotationAngle;}
 
   //
   void   SetSPDRemoveNoisyFlag(Bool_t value) {fSPDRemoveNoisyFlag = value;}
@@ -627,6 +629,7 @@ class AliITSRecoParam : public AliDetectorRecoParam
   Bool_t  fTrackleterRemoveClustersFromOverlaps;   // Option to skip clusters in the overlaps
   Float_t fTrackleterPhiOverlapCut;                // Fiducial window in phi for overlap cut
   Float_t fTrackleterZetaOverlapCut;               // Fiducial window in eta for overlap cut
+  Float_t fTrackleterPhiRotationAngle;             // Angle to rotate cluster in the SPD inner layer for combinatorial reco only
   Bool_t fUseCosmicRunShiftsSSD; // SSD time shifts for cosmic run 2007/2008 (use for data taken up to 18 sept 2008)
 
 
@@ -687,8 +690,7 @@ class AliITSRecoParam : public AliDetectorRecoParam
   AliITSRecoParam(const AliITSRecoParam & param);
   AliITSRecoParam & operator=(const AliITSRecoParam &param);
 
-  ClassDef(AliITSRecoParam,30) // ITS reco parameters
+  ClassDef(AliITSRecoParam,31) // ITS reco parameters
 };
 
 #endif
-