Linear gradient inside radiators. Height in the radiator used to find temperature
authordibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Jul 2010 08:27:52 +0000 (08:27 +0000)
committerdibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 8 Jul 2010 08:27:52 +0000 (08:27 +0000)
Ring reconstructed with at least 3 photons (fake rings with nPhot<3 eliminated)

HMPID/AliHMPIDParam.h
HMPID/AliHMPIDRecon.cxx
HMPID/AliHMPIDTracker.cxx

index 834c9b7..cd50bf7 100644 (file)
@@ -79,8 +79,9 @@ public:
   inline void SetGeomAccept();
   
   inline static Int_t  InHVSector(           Float_t y     );                                                           //find HV sector
-  static Int_t  Radiator(          Float_t y               )       {if (InHVSector(y)<0) return -1; return InHVSector(y)/2;}
-  static Bool_t  IsInside    (Float_t x,Float_t y,Float_t d=0)     {return  x>-d&&y>-d&&x<fgkMaxPcX[kMaxPc]+d&&y<fgkMaxPcY[kMaxPc]+d; } //is point inside chamber boundaries?
+  static Int_t     Radiator(          Float_t y               )       {if (InHVSector(y)<0) return -1; return InHVSector(y)/2;}
+  static Double_t  HinRad(Float_t y)         {if (Radiator(y)<0) return -1;return y-Radiator(y)*fgkMinPcY[Radiator(y)];}                                   // height in the radiator to estimate temperature from gradient
+  static Bool_t    IsInside    (Float_t x,Float_t y,Float_t d=0)     {return  x>-d&&y>-d&&x<fgkMaxPcX[kMaxPc]+d&&y<fgkMaxPcY[kMaxPc]+d; } //is point inside chamber boundaries?
 
   //For optical properties
   static Double_t   EPhotMin()                       {return 5.5;}           //
@@ -272,13 +273,13 @@ Int_t AliHMPIDParam::InHVSector(Float_t y)
 Double_t AliHMPIDParam::FindTemp(Double_t tLow,Double_t tHigh,Double_t y)
 {
 //  Model for gradient in temperature
+  Double_t yRad = HinRad(y);     //height in a given radiator
+  if(tHigh<tLow) tHigh = tLow;   //if Tout < Tin consider just Tin as reference...
+  if(yRad<0        ) yRad = 0;         //protection against fake y values
+  if(yRad>SizePcY()) yRad = SizePcY(); //protection against fake y values
   
-//  Double_t gradT = (t2-t1)/SizePcY();  // linear gradient
-//  return gradT*y+t1;
-  Double_t halfPadSize = 0.5*SizePadY();
-  Double_t gradT = (TMath::Log(SizePcY()) - TMath::Log(halfPadSize))/(TMath::Log(tHigh)-TMath::Log(tLow));
-  if(y<0) y = 0;
-  return tLow + TMath::Power(y/halfPadSize,1./gradT);  
+  Double_t gradT = (tHigh-tLow)/SizePcY();  // linear gradient
+  return gradT*yRad+tLow;
 }
 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 void AliHMPIDParam::SetChStatus(Int_t ch,Bool_t status)
index 85495c4..27069b2 100644 (file)
@@ -127,7 +127,7 @@ void AliHMPIDRecon::CkovAngle(AliESDtrack *pTrk,TClonesArray *pCluLst,Int_t inde
   pTrk->SetHMPIDmip(mipX,mipY,mipQ,fPhotCnt);                                                 //store mip info in any case 
   pTrk->SetHMPIDcluIdx(chId,index+1000*sizeClu);                                              //set index of cluster
   
-  if(fPhotCnt<=nMinPhotAcc) {                                                                 //no reconstruction with <=3 photon candidates
+  if(fPhotCnt<nMinPhotAcc) {                                                                  //no reconstruction with <=3 photon candidates
     pTrk->SetHMPIDsignal(kNoPhotAccept);                                                      //set the appropriate flag
     return;
   }
@@ -141,7 +141,7 @@ void AliHMPIDRecon::CkovAngle(AliESDtrack *pTrk,TClonesArray *pCluLst,Int_t inde
   Int_t iNrec=FlagPhot(HoughResponse());                                                      //flag photons according to individual theta ckov with respect to most probable
   pTrk->SetHMPIDmip(mipX,mipY,mipQ,iNrec);                                                    //store mip info 
 
-  if(iNrec<1){
+  if(iNrec<nMinPhotAcc){
     pTrk->SetHMPIDsignal(kNoPhotAccept);                                                      //no photon candidates are accepted
     return;
   }
index 528ea53..837164c 100644 (file)
@@ -256,13 +256,13 @@ Int_t AliHMPIDTracker::Recon(AliESDEvent *pEsd,TObjArray *pClus,TObjArray *pNmea
 
     FillResiduals(hmpTrk,bestHmpCluster,kFALSE);
  
+    Int_t iRad     = pParam->Radiator(yRa);                                                      //evaluate the radiator involved
     
     //evaluate nMean
     if(tsRight){
      if(pNmean->GetEntries()==21) {                                                              //for backward compatibility
        nmean=((TF1*)pNmean->At(3*ipCh))->Eval(ts);                                               //C6F14 Nmean for this chamber
      } else {
-       Int_t iRad     = pParam->Radiator(yRa);                                                   //evaluate the radiator involved
        if(iRad < 0) {
        nmean = -1;
        } else {
@@ -376,12 +376,14 @@ Int_t AliHMPIDTracker::ReconHiddenTrk(AliESDEvent *pEsd,TObjArray *pClus,TObjArr
 
     Double_t yRa = yMip;                                                                        //just an approx...
     Double_t nmean;
+
+    Int_t iRad     = pParam->Radiator(yRa);                                                   //evaluate the radiator involved
+    
     //evaluate nMean
     if(tsRight){
     if(pNmean->GetEntries()==21) {                                                              //for backward compatibility
       nmean=((TF1*)pNmean->At(3*chMip))->Eval(ts);                                              //C6F14 Nmean for this chamber
     } else {
-      Int_t iRad     = pParam->Radiator(yRa);                                                   //evaluate the radiator involved
       if(iRad < 0) {
        nmean = -1;
       } else {