]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
added new data member for max clusters/track
authorshahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Jul 2013 10:38:39 +0000 (10:38 +0000)
committershahoian <shahoian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 1 Jul 2013 10:38:39 +0000 (10:38 +0000)
ITS/UPGRADE/AliITSUTrackCond.cxx
ITS/UPGRADE/AliITSUTrackCond.h
ITS/UPGRADE/testITSU/MakeITSRecoParam.C

index 613c44ef20b064a9e82af1efec179bcbac94dfc0..4ecf630b3d976053b3e0c408b423545f77510385 100644 (file)
@@ -21,6 +21,7 @@ AliITSUTrackCond::AliITSUTrackCond(int nLayers)
   ,fActiveLrOuter(0)
   ,fAllowLayers(0)
   ,fNLayers(0)
+  ,fMaxClus(0)
   ,fMaxITSTPCMatchChi2(fgkMaxMatchChi2)
   ,fClSharing(0)
   ,fMaxBranches(0)
@@ -47,6 +48,7 @@ AliITSUTrackCond::AliITSUTrackCond(const AliITSUTrackCond& src)
   ,fActiveLrOuter(src.fActiveLrOuter)
   ,fAllowLayers(src.fAllowLayers)
   ,fNLayers(0)
+  ,fMaxClus(0)
   ,fMaxITSTPCMatchChi2(src.fMaxITSTPCMatchChi2)
   ,fClSharing(0)
   ,fMaxBranches(0)
@@ -63,6 +65,7 @@ AliITSUTrackCond::AliITSUTrackCond(const AliITSUTrackCond& src)
 {
   // copy c-tor
   SetNLayers(src.fNLayers);
+  fMaxClus = src.fMaxClus;
   for (int i=fNLayers;i--;) {
     SetMaxBranches(i,src.GetMaxBranches(i));
     SetMaxCandidates(i,src.GetMaxCandidates(i));
@@ -72,9 +75,10 @@ AliITSUTrackCond::AliITSUTrackCond(const AliITSUTrackCond& src)
     SetNSigmaRoadY(i,src.GetNSigmaRoadY(i));
     SetNSigmaRoadZ(i,src.GetNSigmaRoadZ(i));
     SetClSharing(i,src.GetClSharing(i));
-    SetMaxITSSAChi2(1+2*i,src.GetMaxITSSAChi2(1+2*i));
-    SetMaxITSSAChi2(1+2*i+1,src.GetMaxITSSAChi2(1+2*i+1));
   }
+  //
+  for (int i=fMaxClus;i--;) SetMaxITSSAChi2(1+i,src.GetMaxITSSAChi2(1+i));
+  //
 }
 
 //______________________________________________________________
@@ -102,9 +106,9 @@ AliITSUTrackCond& AliITSUTrackCond::operator=(const AliITSUTrackCond& src)
       SetNSigmaRoadY(i,src.GetNSigmaRoadY(i));
       SetNSigmaRoadZ(i,src.GetNSigmaRoadZ(i));
       SetClSharing(i,src.GetClSharing(i));
-      SetMaxITSSAChi2(1+2*i,src.GetMaxITSSAChi2(1+2*i));
-      SetMaxITSSAChi2(1+2*i+1,src.GetMaxITSSAChi2(1+2*i+1));
     }
+    for (int i=fMaxClus;i--;) SetMaxITSSAChi2(1+i,src.GetMaxITSSAChi2(1+i));
+    //
     fAuxData = src.fAuxData;
   }
   return *this;
@@ -127,6 +131,7 @@ void AliITSUTrackCond::SetNLayers(int nLayers)
     delete[] fMaxITSSAChi2;
   }
   fNLayers = nLayers;
+  fMaxClus = 2*fNLayers;
   fAllowLayers = 0;
   //
   if (fNLayers>0) {
@@ -140,7 +145,7 @@ void AliITSUTrackCond::SetNLayers(int nLayers)
     fMissPenalty   = new Float_t[fNLayers];
     fNSigmaRoadY   = new Float_t[fNLayers];
     fNSigmaRoadZ   = new Float_t[fNLayers];
-    fMaxITSSAChi2  = new Float_t[2*fNLayers];
+    fMaxITSSAChi2  = new Float_t[fMaxClus];
     for (int i=fNLayers;i--;) {
       fAllowLayers |= 0x1<<i;
       SetClSharing(i,fgkClSharing);
@@ -149,11 +154,10 @@ void AliITSUTrackCond::SetNLayers(int nLayers)
       SetMaxTr2ClChi2(i,fgkMaxTr2ClChi2);
       SetMaxChi2GloNrm(i,fgkMaxChi2GloNrm);
       SetMissPenalty(i,fgkMissPenalty);
-      SetMaxITSSAChi2(1+2*i,fgkMaxITSSAChi2);
-      SetMaxITSSAChi2(1+2*i+1,fgkMaxITSSAChi2);
       SetNSigmaRoadY(i,-1); // force recalculation
       SetNSigmaRoadZ(i,-1); // force recalculation
     }
+    for (int i=fMaxClus;i--;) SetMaxITSSAChi2(1+i,fgkMaxITSSAChi2);
   }
   else {
     fClSharing     = 0;
@@ -251,7 +255,7 @@ void AliITSUTrackCond::Print(Option_t*) const
   //
   printf("ITS/TPC matching MaxChi2: %.3f\n",fMaxITSTPCMatchChi2);
   printf("ITS_SA BWD fit   MaxChi2 vs Ncl :");
-  for (int i=1;i<=2*fNLayers;i++) if (GetMaxITSSAChi2(i)>1e-6) printf("\t%d: %.2f",i,GetMaxITSSAChi2(i)); printf("\n");
+  for (int i=1;i<=fMaxClus;i++) if (GetMaxITSSAChi2(i)>1e-6) printf("\t%d: %.2f",i,GetMaxITSSAChi2(i)); printf("\n");
   //
 }
 
@@ -269,10 +273,9 @@ void AliITSUTrackCond::Init()
     float nsig = Sqrt(2*GetMaxTr2ClChi2(ilr));
     if (GetNSigmaRoadY(ilr)<0) SetNSigmaRoadY(ilr,nsig);
     if (GetNSigmaRoadZ(ilr)<0) SetNSigmaRoadZ(ilr,nsig);
-    if (GetMaxITSSAChi2(1+2*ilr)<1e-6) SetMaxITSSAChi2(1+2*ilr,fgkMaxITSSAChi2);
-    if (GetMaxITSSAChi2(1+2*ilr+1)<1e-6) SetMaxITSSAChi2(1+2*ilr+1,fgkMaxITSSAChi2);
     //
   }
+  for (int i=fMaxClus;i--;) if (GetMaxITSSAChi2(1+1)<1e-6)  SetMaxITSSAChi2(1+i,fgkMaxMatchChi2);
   if (fMaxITSTPCMatchChi2<1e-6) SetMaxITSTPCMatchChi2(fgkMaxMatchChi2);
   //
   fInitDone = kTRUE;
index 137708cda53fa4e38713d041c28f13f8cb7c376c..a449841d29dd0715586ce779134b3bca4df38769 100644 (file)
@@ -82,11 +82,12 @@ class AliITSUTrackCond : public TObject
   Char_t      fActiveLrOuter;            // outermose active layer to consider
   UShort_t    fAllowLayers;              // pattern of active layers to be checked
   Int_t       fNLayers;                  // total number of layers
+  Int_t       fMaxClus;                  // max number of clusters in track (by default, 2*fNLayers)
   Float_t     fMaxITSTPCMatchChi2;       // max chi2 for ITS/TPC matching
   Char_t*     fClSharing;                // [fNLayers] is cluster sharing allowed
   Short_t*    fMaxBranches;              // [fNLayers] max allowed branches per seed on each layer
   Short_t*    fMaxCandidates;            // [fNLayers] max allowed candidates per TPC seed on each layer
-  Float_t*    fMaxITSSAChi2;             // [fNLayers] max chi2 for ITS standalone fit (backward) vs N cl
+  Float_t*    fMaxITSSAChi2;             // [fMaxClus] max chi2 for ITS standalone fit (backward) vs N cl
   Float_t*    fMaxTr2ClChi2;             // [fNLayers] max track-to-cluster chi2
   Float_t*    fMaxChi2GloNrm;            // [fNLayers] max norm global chi2
   Float_t*    fMissPenalty;              // [fNLayers] chi2 penalty for missing hit on the layer
@@ -106,7 +107,7 @@ class AliITSUTrackCond : public TObject
   static Float_t fgkMaxMatchChi2;         // max acceptable matching chi2
   static Float_t fgkMaxITSSAChi2;         // max acceptable standalone ITS backward fit chi2
   //
-  ClassDef(AliITSUTrackCond,9)           // set of requirements on track hits pattern
+  ClassDef(AliITSUTrackCond,10)           // set of requirements on track hits pattern
 };
 
 
index f5e1902244dc5a732f26db5006d3f8f4ed8dc458..c9b0cbb74747ca9a7478d17c99c0227ab31ed8c1 100644 (file)
@@ -35,6 +35,7 @@ void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult
   }
   //
   const Bool_t kAllowDiagCl = kFALSE;
+  const Bool_t kUseLUT[3] = {kTRUE,kTRUE,kFALSE}; // use TGeo mat.queries only for RefitInward
   //
   // long tracks
   /*
@@ -75,7 +76,7 @@ void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult
 
   // short tracks from decays
   int   c1nBranch[7]   = {0,0,0,4,6,6,10}; // max branching for the seed on layer
-  int   c1nCands[7]    = {0,0,0,5,5,5,8}; // max candidates for the TPC seed
+  int   c1nCands[7]    = {0,0,0,7,7,7,8}; // max candidates for the TPC seed
   float c1tr2clChi2[7] = {0,0,0,20,20,20,30}; // cut on cluster to track chi2 
   float c1gloChi2[7]   = {0,0,0,16,40,35,30}; // cut on seed global norm chi2
   float c1missPen[7]   = {0.,0.,0.,2.,2.,2.,2.};    // missing cluster penalty
@@ -106,6 +107,7 @@ void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult
     recoParamArray->AddLast(itsRecoParam);
     //******************************************************************
     for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
+    for (int i=AliITSURecoParam::kNTrackingPhases;i--;) itsRecoParam->SetUseMatLUT(i,kUseLUT[i]);
     //  
     // Add tracking conditions >>>
     trCond = new AliITSUTrackCond();
@@ -173,6 +175,7 @@ void MakeITSRecoParam(AliRecoParam::EventSpecie_t default=AliRecoParam::kLowMult
     recoParamArray->AddLast(itsRecoParam);
     //******************************************************************
     for (int i=0;i<nLr;i++) itsRecoParam->SetAllowDiagonalClusterization(i,kAllowDiagCl);
+    for (int i=AliITSURecoParam::kNTrackingPhases;i--;) itsRecoParam->SetUseMatLUT(i,kUseLUT[i]);
     //  
     // Add tracking conditions >>>
     trCond = new AliITSUTrackCond();