Updates
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Mar 2011 19:18:52 +0000 (19:18 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 30 Mar 2011 19:18:52 +0000 (19:18 +0000)
PWG3/vertexingHF/AliAODPidHF.cxx
PWG3/vertexingHF/AliAODPidHF.h
PWG3/vertexingHF/AliAnalysisTaskSEDplus.cxx
PWG3/vertexingHF/AliAnalysisTaskSEHFQA.cxx

index 89ccca7..2ec11ed 100644 (file)
@@ -50,6 +50,8 @@ AliAODPidHF::AliAODPidHF():
   fTRD(kFALSE),
   fMatch(0),
   fCompat(kFALSE),
+  fPCompatTOF(1.5),
+  fnSigmaCompat(),
   fMC(kFALSE),
   fOnePad(kFALSE),
   fPbPb(kFALSE)
@@ -60,6 +62,7 @@ AliAODPidHF::AliAODPidHF():
  fPLimit=new Double_t[fnPLimit];
  fnSigma=new Double_t[fnNSigma];
  fPriors=new Double_t[fnPriors];
+ fnSigmaCompat=new Double_t[2];
 
  for(Int_t i=0;i<fnNSigma;i++){
   fnSigma[i]=0.;
@@ -70,6 +73,9 @@ AliAODPidHF::AliAODPidHF():
  for(Int_t i=0;i<fnPLimit;i++){
   fPLimit[i]=0.;
  }
+ for(Int_t i=0;i<2;i++){
+  fnSigmaCompat[i]=3.;
+ }
 
 }
 //----------------------
@@ -97,6 +103,8 @@ AliAODPidHF::AliAODPidHF(const AliAODPidHF& pid) :
   fTRD(pid.fTRD),
   fMatch(pid.fMatch),
   fCompat(pid.fCompat),
+  fPCompatTOF(pid.fPCompatTOF),
+  fnSigmaCompat(pid.fnSigmaCompat),
   fMC(pid.fMC),
   fOnePad(pid.fOnePad),
   fPbPb(pid.fPbPb)
@@ -509,7 +517,7 @@ Int_t AliAODPidHF::MatchTPCTOF(AliAODTrack *track,Int_t mode,Int_t specie,Bool_t
 
    if(compat && tTPCinfo<0){
     Double_t sig0tmp=fnSigma[0];
-    SetSigma(0,3.);
+    SetSigma(0,fnSigmaCompat[0]);
     if(specie==2 && IsPionRaw(track,"TPC")) tTPCinfo=0;
     if(specie==3 && IsKaonRaw(track,"TPC")) tTPCinfo=0;
     if(specie==4 && IsProtonRaw(track,"TPC")) tTPCinfo=0;
@@ -531,7 +539,14 @@ Int_t AliAODPidHF::MatchTPCTOF(AliAODTrack *track,Int_t mode,Int_t specie,Bool_t
 
   if(compat && tTOFinfo>0){
    Double_t ptrack=track->P();
-   if(ptrack>1.5) tTOFinfo=0;
+   if(ptrack>fPCompatTOF) {
+    Double_t sig0tmp=fnSigma[3];
+    SetSigma(3,fnSigmaCompat[1]);
+    if(specie==2 && IsPionRaw(track,"TOF")) tTOFinfo=0;
+    if(specie==3 && IsKaonRaw(track,"TOF")) tTOFinfo=0;
+    if(specie==4 && IsProtonRaw(track,"TOF")) tTOFinfo=0;
+    SetSigma(3,sig0tmp);
+   }
   }
  }
 
@@ -639,7 +654,16 @@ Int_t AliAODPidHF::MakeRawPid(AliAODTrack *track, Int_t specie){
   return MatchTPCTOF(track,fMatch,specie,fCompat); 
  }else{
   if(fTPC && !fTOF && !fITS) {
-   Int_t tTPCres=ApplyPidTPCRaw(track,specie);
+   Int_t tTPCres=0;
+   if(!fAsym){
+   tTPCres=ApplyPidTPCRaw(track,specie);
+   }else{
+    if(TPCRawAsym(track,specie)) {
+     tTPCres=1;
+    }else{
+     tTPCres=-1;
+    }
+   }
    if(tTPCres==specie){return 1;}else{return tTPCres;};
   }else{
    AliError("You should enable just one detector if you don't want to match");
index 3028a34..99042df 100644 (file)
@@ -31,6 +31,8 @@ class AliAODPidHF : public AliAODPid{
      }
  void SetSigma(Int_t idet,Double_t sigma){fnSigma[idet]=sigma;return;}
  void SetSigmaForTPC(Double_t *sigma){for(Int_t i=0;i<3;i++) fnSigma[i]=sigma[i];return;}
+ void SetSigmaForTPCCompat(Double_t sigma){fnSigmaCompat[0]=sigma;return;}
+ void SetSigmaForTOFCompat(Double_t sigma){fnSigmaCompat[1]=sigma;return;}
  void SetSigmaForTOF(Double_t sigma){fnSigma[3]=sigma;return;}
  void SetSigmaForITS(Double_t sigma){fnSigma[4]=sigma;return;}
  void SetTofSigma(Double_t sigma){fTOFSigma=sigma;return;}
@@ -47,6 +49,7 @@ class AliAODPidHF : public AliAODPid{
  void SetMC(Bool_t mc){fMC=mc;return;}
  void SetOnePad(Bool_t onepad){fOnePad=onepad;return;}
  void SetPbPb(Bool_t pbpb){fPbPb=pbpb;return;}
+ void SetPCompatTOF(Double_t pTOF){fPCompatTOF=pTOF;return;}
  
  //Getters
  Double_t GetSigma(Int_t idet) const{return fnSigma[idet];}
@@ -65,6 +68,9 @@ class AliAODPidHF : public AliAODPid{
  Bool_t GetMC() const{return fMC;}
  Bool_t GetOnePad() const{return fOnePad;}
  Bool_t GetPbPb() const{return fPbPb;}
+ Double_t GetPCompatTOF() const{return fPCompatTOF;}
+ Double_t GetnSigmaCompatTPC() const{return fnSigmaCompat[0];}
+ Double_t GetnSigmaCompatTOF() const{return fnSigmaCompat[1];}
 
  Int_t RawSignalPID (AliAODTrack *track, TString detector) const;
  Bool_t IsKaonRaw (AliAODTrack *track, TString detector) const;
@@ -97,7 +103,7 @@ class AliAODPidHF : public AliAODPid{
 
  private:
  Int_t fnNSigma; // number of sigmas
- Double_t *fnSigma; // [fnNSigma], sigma for the raw signal PID: 0-2 for TPC, 3 for TOF, 4 for ITS 
+ Double_t *fnSigma; // [fnNSigma], sigma for the raw signal PID: 0-2 for TPC, 3 for TOF, 4 for ITS
  Double_t fTOFSigma; // TOF precision 
  Int_t fnPriors; //number of priors
  Double_t *fPriors; // [fnPriors], set of priors
@@ -110,13 +116,15 @@ class AliAODPidHF : public AliAODPid{
  Bool_t fTRD; // switch to include or exclude TRD
  Int_t fMatch; //switch to combine the info from more detectors: 1 = || , 2 = &, 3 = p region
  Bool_t fCompat; // compatibility region : useful only if fMatch=1
+ Double_t fPCompatTOF; //  compatibility p limit for TOF  
+ Double_t *fnSigmaCompat; //  0: n sigma for TPC compatibility band, 1: for TOF  
  Bool_t fMC; // MC(kTRUE) or real data (kFALSE, default option)
  Bool_t fOnePad; //  real data with one pad clusters 
  Bool_t fPbPb; //  real data PbPb 
  
 
 
- ClassDef(AliAODPidHF,7) // AliAODPid for heavy flavor PID
+ ClassDef(AliAODPidHF,8) // AliAODPid for heavy flavor PID
 
 };
 
index 7e5da98..0b7bc85 100644 (file)
@@ -1057,7 +1057,8 @@ void AliAnalysisTaskSEDplus::UserExec(Option_t */*option*/)
   //start LS analysis
   if(fDoLS && arrayLikeSign) LSAnalysis(array3Prong,arrayLikeSign,aod,vtx1,nOS);
   
-  PostData(1,fOutput);    
+  PostData(1,fOutput); 
+  PostData(2,fListCuts);
   PostData(3,fCounter);    
   return;
 }
index 2d97cd6..3a8e451 100644 (file)
@@ -360,7 +360,7 @@ void AliAnalysisTaskSEHFQA::UserCreateOutputObjects()
 
       hname="hptFakeTr";
       TH1F* hptFakeTr=new TH1F(hname.Data(),"Pt distribution of fake tracks;p_{t}[GeV];Entries/0.05 GeV/c",400,0.,20.);
-      hptGoodTr->SetTitleOffset(1.3,"Y");
+      hptFakeTr->SetTitleOffset(1.3,"Y");
 
       fOutputTrack->Add(hptFakeTr);
       fOutputTrack->Add(hdistrFakeTr);
@@ -844,9 +844,9 @@ void AliAnalysisTaskSEHFQA::UserExec(Option_t */*option*/)
              ((TH1F*)fOutputTrack->FindObject("hptGoodTr"))->Fill(track->Pt());
              isGoodTrack++;
            }
-         }//simple mode: no IsSelected on tracks: use "manual" cuts
-       }    
-      }
+         }
+       }//simple mode: no IsSelected on tracks: use "manual" cuts    
+      }//fill track histos
     } //end loop on tracks
 
       //fill once per event
@@ -899,18 +899,19 @@ void AliAnalysisTaskSEHFQA::UserExec(Option_t */*option*/)
            
            Int_t label=0;
            if(fReadMC)label=track->GetLabel();
-           if(fReadMC && label<0 && fOnOff[0]) {
-             isFakeTrack++;
-             ((TH1F*)fOutputTrack->FindObject("hptFakeTr"))->Fill(track->Pt());
+           if(fOnOff[0]){
+             if(fReadMC && label<0) {
+               isFakeTrack++;
+               ((TH1F*)fOutputTrack->FindObject("hptFakeTr"))->Fill(track->Pt());
           
-             ((TH1F*)fOutputTrack->FindObject("hd0f"))->Fill(d->Getd0Prong(id));
-           } else {
-             isGoodTrack++;
-             ((TH1F*)fOutputTrack->FindObject("hptGoodTr"))->Fill(track->Pt());
+               ((TH1F*)fOutputTrack->FindObject("hd0f"))->Fill(d->Getd0Prong(id));
+             } else {
+               isGoodTrack++;
+               ((TH1F*)fOutputTrack->FindObject("hptGoodTr"))->Fill(track->Pt());
            
-             ((TH1F*)fOutputTrack->FindObject("hd0"))->Fill(d->Getd0Prong(id));
-           }
-         
+               ((TH1F*)fOutputTrack->FindObject("hd0"))->Fill(d->Getd0Prong(id));
+             }
+           }     
            if (fCuts->IsSelected(d,AliRDHFCuts::kAll,aod) && fOnOff[1]){
          
              AliAODPid *pid = track->GetDetPid();