]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
authormorsch <andreas.morsch@cern.ch>
Tue, 7 Oct 2014 13:44:19 +0000 (15:44 +0200)
committermorsch <andreas.morsch@cern.ch>
Tue, 7 Oct 2014 13:44:19 +0000 (15:44 +0200)
1  2 
STEER/STEERBase/AliPIDResponse.cxx
STEER/STEERBase/AliPIDResponse.h

index 450e6d0aeee21db2d5b4fdc9ecb6a9bd0142af4d,ec2d74caab64df006e68081bd32adfec446fa1bc..2306c06983705734da9ee887d9c569d21a244a49
@@@ -71,7 -71,6 +71,7 @@@ fIsMC(isMC)
  fCachePID(kFALSE),
  fOADBPath(),
  fCustomTPCpidResponse(),
 +fCustomTPCetaMaps(),
  fBeamType("PP"),
  fLHCperiod(),
  fMCperiodTPC(),
@@@ -138,7 -137,6 +138,7 @@@ fIsMC(other.fIsMC)
  fCachePID(other.fCachePID),
  fOADBPath(other.fOADBPath),
  fCustomTPCpidResponse(other.fCustomTPCpidResponse),
 +fCustomTPCetaMaps(other.fCustomTPCetaMaps),
  fBeamType("PP"),
  fLHCperiod(),
  fMCperiodTPC(),
@@@ -191,7 -189,6 +191,7 @@@ AliPIDResponse& AliPIDResponse::operato
      fITSPIDmethod=other.fITSPIDmethod;
      fOADBPath=other.fOADBPath;
      fCustomTPCpidResponse=other.fCustomTPCpidResponse;
 +    fCustomTPCetaMaps=other.fCustomTPCetaMaps;
      fTuneMConData=other.fTuneMConData;
      fTuneMConDataMask=other.fTuneMConDataMask;
      fIsMC=other.fIsMC;
@@@ -1023,20 -1020,17 +1023,20 @@@ void AliPIDResponse::SetTPCEtaMaps(Doub
    fTPCResponse.SetEtaCorrMap(0x0);
    fTPCResponse.SetSigmaParams(0x0, 0);
    
 +  
 +  TString fileNameMaps(Form("%s/COMMON/PID/data/TPCetaMaps.root", fOADBPath.Data()));
 +  if (!fCustomTPCetaMaps.IsNull()) fileNameMaps=fCustomTPCetaMaps;
 +  
    // Load the eta correction maps
    AliOADBContainer etaMapsCont(Form("TPCetaMaps_%s_pass%d", dataType.Data(), recopass)); 
    
 -  Int_t statusCont = etaMapsCont.InitFromFile(Form("%s/COMMON/PID/data/TPCetaMaps.root", fOADBPath.Data()),
 -                                              Form("TPCetaMaps_%s_pass%d", dataType.Data(), recopass));
 +  Int_t statusCont = etaMapsCont.InitFromFile(fileNameMaps.Data(), Form("TPCetaMaps_%s_pass%d", dataType.Data(), recopass));
    if (statusCont) {
      AliError("Failed initializing TPC eta correction maps from OADB -> Disabled eta correction");
      fUseTPCEtaCorrection = kFALSE;
    }
    else {
 -    AliInfo(Form("Loading TPC eta correction map from %s/COMMON/PID/data/TPCetaMaps.root", fOADBPath.Data()));
 +    AliInfo(Form("Loading TPC eta correction map from %s", fileNameMaps.Data()));
      
      TH2D* etaMap = 0x0;
      
            fUseTPCEtaCorrection = kFALSE;
          }
          else {
 -          AliInfo(Form("Loaded TPC eta correction map (refine factors %.2f/%.2f) from %s/COMMON/PID/data/TPCetaMaps.root: %s (MD5(map) = %s)", 
 -                       refineFactorMapX, refineFactorMapY, fOADBPath.Data(), fTPCResponse.GetEtaCorrMap()->GetTitle(),
 +          AliInfo(Form("Loaded TPC eta correction map (refine factors %.2f/%.2f) from %s: %s (MD5(map) = %s)", 
 +                       refineFactorMapX, refineFactorMapY, fileNameMaps.Data(), fTPCResponse.GetEtaCorrMap()->GetTitle(),
                         GetChecksum(fTPCResponse.GetEtaCorrMap()).Data()));
          }
          
    // Load the sigma parametrisation (1/dEdx vs tanTheta_local (~eta))
    AliOADBContainer etaSigmaMapsCont(Form("TPCetaSigmaMaps_%s_pass%d", dataType.Data(), recopass)); 
    
 -  statusCont = etaSigmaMapsCont.InitFromFile(Form("%s/COMMON/PID/data/TPCetaMaps.root", fOADBPath.Data()),
 -                                             Form("TPCetaSigmaMaps_%s_pass%d", dataType.Data(), recopass));
 +  statusCont = etaSigmaMapsCont.InitFromFile(fileNameMaps.Data(), Form("TPCetaSigmaMaps_%s_pass%d", dataType.Data(), recopass));
    if (statusCont) {
      AliError("Failed initializing TPC eta sigma maps from OADB -> Using old sigma parametrisation");
    }
    else {
 -    AliInfo(Form("Loading TPC eta sigma map from %s/COMMON/PID/data/TPCetaMaps.root", fOADBPath.Data()));
 +    AliInfo(Form("Loading TPC eta sigma map from %s", fileNameMaps.Data()));
      
      TObjArray* etaSigmaPars = 0x0;
      
            fTPCResponse.SetSigmaParams(0x0, 0);
          }
          else {
 -          AliInfo(Form("Loaded TPC sigma correction map (refine factors %.2f/%.2f) from %s/COMMON/PID/data/TPCetaMaps.root: %s (MD5(map) = %s, sigmaPar0 = %f)", 
 -                       refineFactorSigmaMapX, refineFactorSigmaMapY, fOADBPath.Data(), fTPCResponse.GetSigmaPar1Map()->GetTitle(),
 +          AliInfo(Form("Loaded TPC sigma correction map (refine factors %.2f/%.2f) from %s: %s (MD5(map) = %s, sigmaPar0 = %f)", 
 +                       refineFactorSigmaMapX, refineFactorSigmaMapY, fileNameMaps.Data(), fTPCResponse.GetSigmaPar1Map()->GetTitle(),
                         GetChecksum(fTPCResponse.GetSigmaPar1Map()).Data(), sigmaPar0));
          }
          
@@@ -1167,11 -1162,11 +1167,11 @@@ void AliPIDResponse::SetTPCPidResponseM
    delete fArrPidResponseMaster;
    fArrPidResponseMaster=NULL;
    
 -  TString fileName(Form("%s/COMMON/PID/data/TPCPIDResponse.root", fOADBPath.Data()));
    TFile *f=NULL;
 -  if (!fCustomTPCpidResponse.IsNull()) fileName=fCustomTPCpidResponse;
    
    TString fileNamePIDresponse(Form("%s/COMMON/PID/data/TPCPIDResponse.root", fOADBPath.Data()));
 +  if (!fCustomTPCpidResponse.IsNull()) fileNamePIDresponse=fCustomTPCpidResponse;
 +  
    f=TFile::Open(fileNamePIDresponse.Data());
    if (f && f->IsOpen() && !f->IsZombie()){
      fArrPidResponseMaster=dynamic_cast<TObjArray*>(f->Get("TPCPIDResponse"));
@@@ -1600,7 -1595,6 +1600,6 @@@ void AliPIDResponse::SetTRDSlices(UInt_
      }
      AliDebug(1,Form("Slice Range set to %d - %d",TRDslicesForPID[0],TRDslicesForPID[1]));
  }
  //______________________________________________________________________________ 
  void AliPIDResponse::SetTRDdEdxParams()
  {
@@@ -2399,7 -2393,7 +2398,7 @@@ AliPIDResponse::EDetPidStatus AliPIDRes
    return pidStatus;
  }
  //______________________________________________________________________________
- AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeTOFProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const
+ AliPIDResponse::EDetPidStatus AliPIDResponse::GetComputeTOFProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[],Bool_t kNoMism) const
  {
    //
    // Compute PID probabilities for TOF
    // Beam type --> fBeamTypeNum
    // N TOF cluster --> TOF header --> to get the TOF header we need to add a virtual method in AliVTrack extended to ESD and AOD tracks
    // isMC --> fIsMC
+   Float_t pt = track->Pt();
+   Float_t mismPropagationFactor[10] = {1.,1.,1.,1.,1.,1.,1.,1.,1.,1.};
+   if(! kNoMism){ // this flag allows to disable mismatch for iterative procedure to get priors
+     mismPropagationFactor[3] = 1 + TMath::Exp(1 - 1.12*pt);// it has to be alligned with the one in AliPIDCombined
+     mismPropagationFactor[4] = 1 + 1./(4.71114 - 5.72372*pt + 2.94715*pt*pt);// it has to be alligned with the one in AliPIDCombined
+     
    Int_t nTOFcluster = 0;
    if(track->GetTOFHeader() && track->GetTOFHeader()->GetTriggerMask()){ // N TOF clusters available
      nTOFcluster = track->GetTOFHeader()->GetNumberOfTOFclusters();
-     if(fIsMC) nTOFcluster *= 1.5; // +50% in MC
+     if(fIsMC) nTOFcluster = Int_t(nTOFcluster * 1.5); // +50% in MC
    }
    else{
      switch(fBeamTypeNum){
+       case kPP: // pp
+       nTOFcluster = 80;
+       break;
+       case kPPB: // pPb 5.05 ATeV
+       nTOFcluster = Int_t(308 - 2.12*fCurrCentrality + TMath::Exp(4.917 -0.1604*fCurrCentrality));
+       break;
+       case kPBPB: // PbPb 2.76 ATeV
+       nTOFcluster = Int_t(TMath::Exp(9.4 - 0.022*fCurrCentrality));
+       break;
+     }
+   }
+     switch(fBeamTypeNum){ // matching window factors for 3 cm and 10 cm (about (10/3)^2)
      case kPP: // pp 7 TeV
-       nTOFcluster = 50;
+       nTOFcluster *= 10;
        break;
      case kPPB: // pPb 5.05 ATeV
-       nTOFcluster = 50 + (100-fCurrCentrality)*50;
+       nTOFcluster *= 10;
        break;
-     case kPBPB: // PbPb 2.76 ATeV
-       nTOFcluster = 50 + (100-fCurrCentrality)*150;
+     case kPBPB: // pPb 5.05 ATeV
+       //       nTOFcluster *= 1;
        break;
      }
+     
+     
+     fgTOFmismatchProb=fTOFResponse.GetMismatchProbability(track->GetTOFsignal(),track->Eta()) * nTOFcluster *6E-6 * (1 + 2.90505e-01/pt/pt); // mism weight * tof occupancy (including matching window factor) * pt dependence
+     
    }
  
-   //fTOFResponse.GetMismatchProbability(track->GetTOFsignal(),track->Eta()) * 0.01; // for future implementation of mismatch (i.e. 1% mismatch that should be extended for PbPb, pPb)
    // set flat distribution (no decision)
    for (Int_t j=0; j<nSpecies; j++) p[j]=1./nSpecies;
    
      else
        p[j] = TMath::Exp(-(nsigmas - fTOFtail*0.5)*fTOFtail)/sig;
      
-     p[j] += fgTOFmismatchProb;
+     p[j] += fgTOFmismatchProb*mismPropagationFactor[j];
    }
    
    return kDetPidOk;
index 8bd9d575543f8668fdc0e477a1ed5277eb70ab2d,185810498bb519c7f87da3190ff232a26b19275e..89acd222b0e048ca897f633870388dc74db47574
@@@ -139,9 -139,6 +139,9 @@@ public
    void SetCustomTPCpidResponse(const char* tpcpid) { fCustomTPCpidResponse = tpcpid; }
    const char* GetCustomTPCpidResponse() const { return fCustomTPCpidResponse.Data(); }
    
 +  void SetCustomTPCetaMaps(const char* tpcEtaMaps) { fCustomTPCetaMaps = tpcEtaMaps; }
 +  const char* GetCustomTPCetaMaps() const { return fCustomTPCetaMaps.Data(); }
 +  
    void InitialiseEvent(AliVEvent *event, Int_t pass, Int_t run=-1);
    void SetCurrentFile(const char* file) { fCurrentFile=file; }
    
    AliPIDResponse(const AliPIDResponse &other);
    AliPIDResponse& operator=(const AliPIDResponse &other);
  
+   EBeamType GetBeamType() const {return fBeamTypeNum;};
  
  protected:
    AliITSPIDResponse   fITSResponse;    //PID response function of the ITS
@@@ -219,7 -218,6 +221,7 @@@ private
  
    TString fOADBPath;                   // OADB path to use
    TString fCustomTPCpidResponse;       // Custom TPC Pid Response file for debugging purposes
 +  TString fCustomTPCetaMaps;           // Custom TPC eta map file for debugging purposes
    
    TString fBeamType;                   //! beam type (PP) or (PBPB)
    TString fLHCperiod;                  //! LHC period
    EDetPidStatus GetComputePIDProbability  (EDetector detCode,  const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
    EDetPidStatus GetComputeITSProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
    EDetPidStatus GetComputeTPCProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
-   EDetPidStatus GetComputeTOFProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
+   EDetPidStatus GetComputeTOFProbability  (const AliVTrack *track, Int_t nSpecies, Double_t p[],Bool_t kNoMism=kFALSE) const;
    EDetPidStatus GetComputeEMCALProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
    EDetPidStatus GetComputePHOSProbability (const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;
    EDetPidStatus GetComputeHMPIDProbability(const AliVTrack *track, Int_t nSpecies, Double_t p[]) const;