]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/TenderSupplies/AliPHOSTenderSupply.cxx
Distance to bad channel re-evaluated; possibility of pass4 added
[u/mrichter/AliRoot.git] / ANALYSIS / TenderSupplies / AliPHOSTenderSupply.cxx
index 6d55bb75188bbd65c1e6a532ca0b807a75480ee1..7508b7f31451e1a74fcf2386a34c52268153e271 100644 (file)
@@ -138,6 +138,9 @@ void AliPHOSTenderSupply::InitTender()
           else \r
            if(fname.Contains("pass3")) \r
              fRecoPass=3;\r
+            else \r
+             if(fname.Contains("pass4")) \r
+               fRecoPass=4;\r
       }\r
     }\r
     if(fRecoPass<0){\r
@@ -305,6 +308,9 @@ void AliPHOSTenderSupply::ProcessEvent()
       clu->SetEmcCpvDistance(r);    \r
       clu->SetChi2(TestLambda(clu->E(),clu->GetM20(),clu->GetM02()));                     //not yet implemented\r
       clu->SetTOF(EvalTOF(&cluPHOS,cells));       \r
+      Double_t minDist=clu->GetDistanceToBadChannel() ;//Already calculated
+      DistanceToBadChannel(mod,&locPos,minDist);
+      clu->SetDistanceToBadChannel(minDist) ;
 \r
     }\r
   }\r
@@ -354,9 +360,9 @@ void AliPHOSTenderSupply::ProcessEvent()
       //correct distance to track\r
       Double_t dx=clu->GetTrackDx() ;\r
       Double_t dz=clu->GetTrackDz() ;\r
+      TVector3 locPos;\r
+      fPHOSGeo->Global2Local(locPos,global,mod) ;\r
       if(dx!=-999.){ //there is matched track\r
-        TVector3 locPos;\r
-        fPHOSGeo->Global2Local(locPos,global,mod) ;\r
         dx+=locPos.X()-locPosOld.X() ;\r
         dz+=locPos.Z()-locPosOld.Z() ;      \r
         clu->SetTrackDistance(dx,dz);\r
@@ -375,6 +381,9 @@ void AliPHOSTenderSupply::ProcessEvent()
      \r
       clu->SetChi2(TestLambda(clu->E(),clu->GetM20(),clu->GetM02()));                     //not yet implemented\r
       clu->SetTOF(EvalTOF(&cluPHOS,cells));       \r
+      Double_t minDist=clu->GetDistanceToBadChannel() ;//Already calculated
+      DistanceToBadChannel(mod,&locPos,minDist);
+      clu->SetDistanceToBadChannel(minDist) ;
     }\r
   }\r
 \r
@@ -786,3 +795,29 @@ Double_t AliPHOSTenderSupply::CalibrateTOF(Double_t tof, Int_t absId, Bool_t isH
   return tof ;\r
   \r
 }\r
+//________________________________________________________________________
+void AliPHOSTenderSupply::DistanceToBadChannel(Int_t mod, TVector3 * locPos, Double_t &minDist){
+  //Check if distance to bad channel was reduced
+  Int_t range = minDist/2.2 +1 ; //Distance at which bad channels should be serached
+  
+  Int_t relid[4]={0,0,0,0} ;
+  fPHOSGeo->RelPosToRelId(mod, locPos->X(), locPos->Z(), relid) ; 
+  Int_t xmin=TMath::Max(1,relid[2]-range) ;
+  Int_t xmax=TMath::Min(64,relid[2]+range) ;
+  Int_t zmin=TMath::Max(1,relid[3]-range) ;
+  Int_t zmax=TMath::Min(56,relid[3]+range) ;
+  
+  Float_t x=0.,z=0.;
+  for(Int_t ix=xmin;ix<=xmax;ix++){
+    for(Int_t iz=zmin;iz<=zmax;iz++){
+      if(fPHOSBadMap[mod]->GetBinContent(ix,iz)>0){ //Bad channel
+        Int_t relidBC[4]={mod,0,ix,iz} ;
+        fPHOSGeo->RelPosInModule(relidBC,x,z); 
+        Double_t dist = TMath::Sqrt((x-locPos->X())*(x-locPos->X()) + (z-locPos->Z())*(z-locPos->Z()));
+        if(dist<minDist) minDist = dist;
+      }
+    }  
+  }
+  
+}
+