]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
1) Updated AddTask for efficiency with different filterbit notation, 2) Added an...
authorlmilano <lmilano@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Nov 2013 08:12:38 +0000 (08:12 +0000)
committerlmilano <lmilano@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Nov 2013 08:12:38 +0000 (08:12 +0000)
PWGCF/Correlations/DPhi/DiHadronPID/AliAODTrackCutsDiHadronPID.cxx
PWGCF/Correlations/DPhi/DiHadronPID/AliAODTrackCutsDiHadronPID.h
PWGCF/Correlations/DPhi/DiHadronPID/AliAnalysisTaskCompareAODTrackCuts.cxx
PWGCF/Correlations/DPhi/DiHadronPID/AliAnalysisTaskCompareAODTrackCuts.h
PWGCF/Correlations/DPhi/DiHadronPID/AliTrackDiHadronPID.cxx
PWGCF/Correlations/DPhi/DiHadronPID/AliTrackDiHadronPID.h

index 8df5e4211ff57f7152b2339572571cafd44a91a1..644b9ead322af7909861597614906cc862bdeb57 100644 (file)
@@ -62,6 +62,7 @@ AliAODTrackCutsDiHadronPID::AliAODTrackCutsDiHadronPID():
        fDCAzCut(999.),
        fIsMC(kFALSE),
        fLowPtNSigmaTOFOnly(kFALSE),
+       fUseNSigmaOnPIDAxes(kFALSE),
        fTestPt(kFALSE),
        fTestFilterMask(kFALSE),
        fTestMaxEta(kFALSE),
@@ -167,6 +168,7 @@ AliAODTrackCutsDiHadronPID::AliAODTrackCutsDiHadronPID(const char* name):
        fDCAzCut(999.),
        fIsMC(kFALSE),
        fLowPtNSigmaTOFOnly(kFALSE),
+       fUseNSigmaOnPIDAxes(kFALSE),    
        fTestPt(kFALSE),        
        fTestFilterMask(kFALSE),
        fTestMaxEta(kFALSE),
@@ -295,25 +297,31 @@ void AliAODTrackCutsDiHadronPID::InitializeDefaultHistoNamesAndAxes() {
        for (Int_t iPtBins = 0; iPtBins < 5; iPtBins++) {fNPtBinsPID[iPtBins] = nptbinspid[iPtBins];}
 
        // Setting the TOF axes for the PID histograms.
+       //Double_t tofsigmaapprox = 80.;
        Double_t toflowerbound[5][3] = {{-2000.,-6000.,-10000.},{-2000.,-4000.,-10000.},{-1000.,-2000.,-5000.},{-1000.,-1000.,-2500.},{-500.,-500.,-1000.}};
        Double_t tofupperbound[5][3] = {{10000.,10000.,6000.},{10000.,8000.,6000.},{6000.,6000.,6000.},{6000.,6000.,6000.},{4000.,4000.,6000.}};
        Int_t tofbins[5][3] = {{120,160,160},{120,120,160},{140,140,165},{140,140,170},{90,90,140}};
        for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
                for (Int_t iSpecies = 0; iSpecies < 3; iSpecies++) {
                        fTOFLowerBound[iPtClass][iSpecies] = toflowerbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {toflowerbound[iPtClass][iSpecies] /= tofsigmaapprox;}
                        fTOFUpperBound[iPtClass][iSpecies] = tofupperbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {tofupperbound[iPtClass][iSpecies] /= tofsigmaapprox;}
                        fTOFbins[iPtClass][iSpecies] = tofbins[iPtClass][iSpecies];
                }
        }
 
        // Setting the TPC axes for the PID histograms.
+       //Double_t tpcsigmaaxpprox = 3.5;
        Double_t tpclowerbound[5][3] = {{-20.,-50.,-100.},{-20.,-30.,-80.},{-25.,-25.,-45.},{-25.,-25.,-45.},{-25.,-20.,-20.}};
        Double_t tpcupperbound[5][3] = {{60.,30.,20.},{60.,40.,20.},{50.,50.,25.},{45.,45.,25.},{25.,30.,30.}}; // Check highest pT bin boundaries for K,p
        Int_t tpcbins[5][3] = {{80,80,120},{80,70,100},{75,75,70},{70,70,70},{50,50,50}};
        for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
                for (Int_t iSpecies = 0; iSpecies < 3; iSpecies++) {
                        fTPCLowerBound[iPtClass][iSpecies] = tpclowerbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {tpclowerbound[iPtClass][iSpecies] /= tpcsigmaaxpprox;}
                        fTPCUpperBound[iPtClass][iSpecies] = tpcupperbound[iPtClass][iSpecies];
+                       //if (fUseNSigmaOnPIDAxes) {tpcupperbound[iPtClass][iSpecies] /= tpcsigmaaxpprox;}
                        fTPCbins[iPtClass][iSpecies] = tpcbins[iPtClass][iSpecies];
                }
        }
@@ -1394,20 +1402,6 @@ Bool_t AliAODTrackCutsDiHadronPID::FillDataHistos(Int_t histoclass, AliTrackDiHa
        //      checkSum++;     cout<<"Pion found: nSigTOF: "<<track->GetNumberOfSigmasTOF(0)<<"; nSigTPC: "<<track->GetNumberOfSigmasTPC(0)<<endl;
        }
 
-       // if (TMath::Sqrt(track->GetNumberOfSigmasTOF(1) * track->GetNumberOfSigmasTOF(1) + 
-       //                              track->GetNumberOfSigmasTPC(1) * track->GetNumberOfSigmasTPC(1)) < 1.) {
-       //      fHistDataDCAxyOneSigma[0 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // All species.
-       //      fHistDataDCAxyOneSigma[6 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // Kaons.
-       // //   checkSum++;     cout<<"Kaon found: nSigTOF: "<<track->GetNumberOfSigmasTOF(1)<<"; nSigTPC: "<<track->GetNumberOfSigmasTPC(1)<<endl;
-       // }
-       // if (TMath::Sqrt(track->GetNumberOfSigmasTOF(2) * track->GetNumberOfSigmasTOF(2) + 
-       //                              track->GetNumberOfSigmasTPC(2) * track->GetNumberOfSigmasTPC(2)) < 1.) {                
-       //      fHistDataDCAxyOneSigma[0 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // All species.
-       //      fHistDataDCAxyOneSigma[9 + histoclass]->Fill(track->Pt(),track->GetXYAtDCA());  // Protons.
-       // //   checkSum++;     cout<<"Proton found: nSigTOF: "<<track->GetNumberOfSigmasTOF(2)<<"; nSigTPC: "<<track->GetNumberOfSigmasTPC(2)<<endl;
-       // }
-       // for protons and low pt:
-
        // for protons and low pt, only when fLowPtNSigmaTOFOnly set to kTRUE:
        if ((TMath::Abs(track->Pt()) < 1.8) && fLowPtNSigmaTOFOnly) {
 
@@ -1445,7 +1439,9 @@ Bool_t AliAODTrackCutsDiHadronPID::FillDataHistos(Int_t histoclass, AliTrackDiHa
                if (!CheckRapidity(track->Y(iSpecies))) continue;
 
                for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
-                       fHistDataPID[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),track->GetTOFsignalMinusExpected(iSpecies),track->GetTPCsignalMinusExpected(iSpecies));          
+                       fHistDataPID[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),
+                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)),
+                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTPC(iSpecies) : track->GetTPCsignalMinusExpected(iSpecies)));            
                }
        }
 
@@ -1464,9 +1460,13 @@ Bool_t AliAODTrackCutsDiHadronPID::FillTOFMismatchHistos(Int_t histoclass, AliTr
                // Note that a possible Y cut is only done on the PID cuts!
                if (!CheckRapidity(track->Y(iSpecies))) continue;
 
+               Double_t TOFmismatchSigma = randomhittime - track->GetTOFsignalExpected(iSpecies);
+               if (fUseNSigmaOnPIDAxes) {TOFmismatchSigma /= track->GetTOFsigmaExpected(iSpecies);}
+
                for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
-                       fHistTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),randomhittime - track->GetTOFsignalExpected(iSpecies));              
-                       fHistTPCTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(),randomhittime - track->GetTOFsignalExpected(iSpecies),track->GetTPCsignalMinusExpected(iSpecies));                        
+                       fHistTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(), TOFmismatchSigma);          
+                       fHistTPCTOFMismatch[histoclass][iSpecies][iPtClass]->Fill(track->Pt(), TOFmismatchSigma,
+                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTPC(iSpecies) : track->GetTPCsignalMinusExpected(iSpecies)));                    
                }
        }
 
@@ -1539,12 +1539,16 @@ Bool_t AliAODTrackCutsDiHadronPID::FillRecMCHistos(Int_t histoclass, AliTrackDiH
                        if (!CheckRapidity(track->MCY())) continue;
 
                        for (Int_t iPtClass = 0; iPtClass < 5; iPtClass++) {
-                               //cout << "recpt: " << track->Pt() << " mcpt: "<<track->MCPt() << " DTOF: " << track->GetTOFsignalMinusExpected(iSpecies) << " DTPC: " << track->GetTPCsignalMinusExpected(iSpecies) << endl;
+                               //cout << "recpt: " << track->Pt() << " mcpt: "<<track->MCPt() << " DTOF: " << 
+                               //(fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)) << " DTPC: " << 
+                               //(fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTPC(iSpecies) : track->GetTPCsignalMinusExpected(iSpecies)) << endl;
 
-                               fHistPrimRecPID[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),track->GetTOFsignalMinusExpected(iSpecies));                
+                               fHistPrimRecPID[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),
+                                       (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)));            
 
                                if (track->IsTOFMismatch()) {
-                                       fHistPrimRecMismatch[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),track->GetTOFsignalMinusExpected(iSpecies));           
+                                       fHistPrimRecMismatch[histoclass][iSpecies][iPtClass]->Fill(track->MCPt(),
+                                               (fUseNSigmaOnPIDAxes ? track->GetNumberOfSigmasTOF(iSpecies) : track->GetTOFsignalMinusExpected(iSpecies)));            
                                }
                        }
                }
@@ -1883,11 +1887,19 @@ TH3F* AliAODTrackCutsDiHadronPID::InitializePIDHisto(const char* name, Int_t his
 
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
 
+       TString PIDaxeslabel;
+       if (fUseNSigmaOnPIDAxes) {PIDaxeslabel = ";n#sigma_{TOF};n#sigma_{TPC}";} 
+       else {PIDaxeslabel = ";#Delta t (ps);dE/dx (a.u.)";}
+
        TH3F* hout = new TH3F(Form("%s%s%s%s",name,fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),fPtClassName[ptclass].Data()),
-               Form("PID %s (Exp: %s);p_{T} (GeV/c);#Delta t (ps);dE/dx (a.u.)",fHistoName[histoclass].Data(),fParticleName[expspecies].Data()),
+               Form("PID %s (Exp: %s);p_{T} (GeV/c)%s",fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),PIDaxeslabel.Data()),
                fNPtBinsPID[ptclass],fPtBoundaryPID[ptclass],fPtBoundaryPID[ptclass+1],
-               fTOFbins[ptclass][expspecies],fTOFLowerBound[ptclass][expspecies],fTOFUpperBound[ptclass][expspecies],
-               fTPCbins[ptclass][expspecies],fTPCLowerBound[ptclass][expspecies],fTPCUpperBound[ptclass][expspecies]);
+               fTOFbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTOFLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTOFUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFUpperBound[ptclass][expspecies]),
+               fTPCbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTPCLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTPCStd : fTPCLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTPCUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTPCStd : fTPCUpperBound[ptclass][expspecies]));
 
        hout->SetDirectory(0);
 
@@ -1898,12 +1910,19 @@ TH3F* AliAODTrackCutsDiHadronPID::InitializePIDHisto(const char* name, Int_t his
 // -----------------------------------------------------------------------
 TH2F* AliAODTrackCutsDiHadronPID::InitializeTOFMismatchHisto(const char* name, Int_t histoclass, Int_t expspecies, Int_t ptclass) {
 
+       // Is basically the same as InitializeTOFHisto -> CAN BE REMOVED!
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
 
+       TString PIDaxeslabel;
+       if (fUseNSigmaOnPIDAxes) {PIDaxeslabel = ";n#sigma_{TOF}";} 
+       else {PIDaxeslabel = ";#Delta t (ps)";}
+
        TH2F* hout = new TH2F(Form("%s%s%s%s",name,fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),fPtClassName[ptclass].Data()),
-               Form("TOF Mismatch %s (Exp: %s);p_{T} (GeV/c);#Delta t (ps)",fHistoName[histoclass].Data(),fParticleName[expspecies].Data()),
+               Form("TOF Mismatch %s (Exp: %s);p_{T} (GeV/c)%s",fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),PIDaxeslabel.Data()),
                fNPtBinsPID[ptclass],fPtBoundaryPID[ptclass],fPtBoundaryPID[ptclass+1],
-               fTOFbins[ptclass][expspecies],fTOFLowerBound[ptclass][expspecies],fTOFUpperBound[ptclass][expspecies]);
+               fTOFbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTOFLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTOFUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFUpperBound[ptclass][expspecies]));
 
        hout->SetDirectory(0);
 
@@ -1916,10 +1935,16 @@ TH2F* AliAODTrackCutsDiHadronPID::InitializeTOFHisto(const char* name, Int_t his
 
        if (fDebug > 1) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
 
+       TString PIDaxeslabel;
+       if (fUseNSigmaOnPIDAxes) {PIDaxeslabel = ";n#sigma_{TOF}";} 
+       else {PIDaxeslabel = ";#Delta t (ps)";}
+
        TH2F* hout = new TH2F(Form("%s%s%s%s",name,fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),fPtClassName[ptclass].Data()),
-               Form("TOF %s (Exp: %s);p_{T} (GeV/c);#Delta t (ps)",fHistoName[histoclass].Data(),fParticleName[expspecies].Data()),
+               Form("TOF %s (Exp: %s);p_{T} (GeV/c)%s",fHistoName[histoclass].Data(),fParticleName[expspecies].Data(),PIDaxeslabel.Data()),
                fNPtBinsPID[ptclass],fPtBoundaryPID[ptclass],fPtBoundaryPID[ptclass+1],
-               fTOFbins[ptclass][expspecies],fTOFLowerBound[ptclass][expspecies],fTOFUpperBound[ptclass][expspecies]);
+               fTOFbins[ptclass][expspecies],
+               (fUseNSigmaOnPIDAxes ? fTOFLowerBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFLowerBound[ptclass][expspecies]),
+               (fUseNSigmaOnPIDAxes ? fTOFUpperBound[ptclass][expspecies] / AliTrackDiHadronPID::fSigmaTOFStd : fTOFUpperBound[ptclass][expspecies]));
 
        hout->SetDirectory(0);
 
index df6da19b78305aacde6a5062ebe620b09c1e040d..6460e1bee1dedd61c0c24d06879a1744f772758d 100644 (file)
@@ -126,7 +126,7 @@ public:
 // Setters (Settings)
        void SetIsMC(Bool_t ismc = kTRUE) {fIsMC = ismc;}
        void SetLowPtNSigmaTOFOnly(Bool_t lowptnsigmatofonly = kFALSE) {fLowPtNSigmaTOFOnly = lowptnsigmatofonly;}
-
+       void SetUseNSigmaOnPIDAxes(const Bool_t useNSigma = kTRUE) {fUseNSigmaOnPIDAxes = useNSigma;}
        void SetDebugLevel(Int_t debuglevel) {fDebug = debuglevel;}
 
 // -----------------------------------------------------------------------
@@ -219,6 +219,7 @@ private:
 // Settings
        Bool_t                                  fIsMC;                                                  // Is the current event MC or not.
        Bool_t                                  fLowPtNSigmaTOFOnly;                    //
+       Bool_t                                  fUseNSigmaOnPIDAxes;                    //
 
 // Requested Histograms;
        Bool_t                                  fHistRequested[12];                             //
@@ -308,7 +309,7 @@ private:
 
        Int_t                                   fDebug;                                                 // Debug flag.
 
-       ClassDef(AliAODTrackCutsDiHadronPID,8);
+       ClassDef(AliAODTrackCutsDiHadronPID,9);
 
 };
 
index 6583ed0f0b6db198f08e01514ecf553f8f5467f8..fc04c3cf968474a066eda8cc2b5bf2a87042a420 100644 (file)
@@ -67,7 +67,8 @@ AliAnalysisTaskCompareAODTrackCuts::AliAnalysisTaskCompareAODTrackCuts():
        fIsMC(kFALSE),
        fVerbose(kFALSE),
        fCalculateTOFMismatch(kFALSE),  
-       fUseMismatchFileFromHomeDir(kTRUE),     
+       fUseMismatchFileFromHomeDir(kTRUE),
+       fUseNSigmaOnPIDAxes(kFALSE),    
        fEventCuts(0x0),
        fTrackCuts(0x0),
        fInclusiveTimes(0x0),
@@ -95,6 +96,7 @@ AliAnalysisTaskCompareAODTrackCuts::AliAnalysisTaskCompareAODTrackCuts(const cha
        fVerbose(kFALSE),
        fCalculateTOFMismatch(kFALSE),  
        fUseMismatchFileFromHomeDir(kTRUE),     
+       fUseNSigmaOnPIDAxes(kFALSE),    
        fEventCuts(0x0),
        fTrackCuts(0x0),
        fInclusiveTimes(0x0),
@@ -375,7 +377,7 @@ void AliAnalysisTaskCompareAODTrackCuts::UserExec(Option_t*) {
                ((AliAODTrackCutsDiHadronPID*)fTrackCuts->At(iCuts))->EventIsDone(fIsMC);
        }
        
-       cout << "Matched: "<<nmatched<<" Mismatched: "<<nmismatched<<" No TOF hit: "<<nnotof<<endl;
+       //cout << "Matched: "<<nmatched<<" Mismatched: "<<nmismatched<<" No TOF hit: "<<nnotof<<endl;
 
        PostData(1,fOutputList);
 
@@ -499,6 +501,48 @@ Double_t AliAnalysisTaskCompareAODTrackCuts::GenerateRandomHit(Double_t eta) {
 
 }
 
+// -----------------------------------------------------------------------
+void AliAnalysisTaskCompareAODTrackCuts::SetUseNSigmaOnPIDAxes(const Bool_t UseNSigma) {
+
+       // Will use NSigma on all PID axes. Will also change all track cuts objects
+       // owned by this task.
+       if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
+
+       fUseNSigmaOnPIDAxes = UseNSigma;
+
+       if (fTrackCuts) {
+               for (Int_t iCut = 0; iCut < fTrackCuts->GetSize(); ++iCut) {
+                       AliAODTrackCutsDiHadronPID* cutstmp = (AliAODTrackCutsDiHadronPID*)(fTrackCuts->At(iCut));
+                       if (cutstmp) {cutstmp->SetUseNSigmaOnPIDAxes(UseNSigma);}
+                       else {cout << Form("%s -> WARNING: Found an empty spot in the track cuts array...",__func__) << endl;}
+               }
+       }
+}
+
+// -----------------------------------------------------------------------
+void AliAnalysisTaskCompareAODTrackCuts::SetEventCuts(AliAODEventCutsDiHadronPID* eventcuts) {
+
+       if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
+       if (!eventcuts) {cout << Form("%s -> ERROR: No Event Cuts Object provided.",__func__) << endl; return;}
+
+       fEventCuts = eventcuts;
+
+}
+
+// -----------------------------------------------------------------------
+void AliAnalysisTaskCompareAODTrackCuts::AddTrackCuts(AliAODTrackCutsDiHadronPID* trackcuts) {
+
+       if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
+       if (!trackcuts) {cout << Form("%s -> ERROR: No Track Cuts Object provided.",__func__) << endl; return;}
+       if (!fTrackCuts) {cout << Form("%s -> ERROR: No Track Cuts array available.",__func__) << endl; return;}
+
+       // The setting of the task propagates to the imported track cuts object.
+       trackcuts->SetUseNSigmaOnPIDAxes(fUseNSigmaOnPIDAxes);
+
+       fTrackCuts->AddLast(trackcuts);
+
+}
+
 // -----------------------------------------------------------------------
 void AliAnalysisTaskCompareAODTrackCuts::SetDebugLevel(const Int_t debuglvl) {
 
index 2d841b296f28b55c05a4edebb914c8a347979fd6..d246c25e1a80c1c9a289fa619672fa5fa0cddd60 100644 (file)
@@ -25,33 +25,18 @@ public:
        Bool_t LoadExternalMismatchHistos();                    // For each mismatch method, external histo's are needed.
        Double_t GenerateRandomHit(Double_t eta);               // Generates a random time for a certain eta.
 
-// Run over MC or not.
+// Task Settings.
        void SetMC(const Bool_t isMC = kTRUE) {fIsMC = isMC;} 
        void SetVerbose(const Bool_t verbose = kTRUE) {fVerbose = verbose;}
        void SetCalculateTOFMismatch(const Bool_t calculatetofmismatch = kTRUE/* const Int_t method*/) {fCalculateTOFMismatch = calculatetofmismatch;}
        void SetUseMismatchFileFromGridHomeDir(const Bool_t usefromhomedir = kTRUE) {fUseMismatchFileFromHomeDir = usefromhomedir;}
+       void SetUseNSigmaOnPIDAxes(const Bool_t UseNSigma = kTRUE);
 
-// Managing Event Cuts.
-    void SetEventCuts(AliAODEventCutsDiHadronPID* eventcuts) {
-       if (!eventcuts) {
-                       cout<<"ERROR: No Event Cuts Object"<<endl;
-               return;
-       }
-       fEventCuts = eventcuts;
-    }
-
-// Managing Track Cuts.
-    void AddTrackCuts(AliAODTrackCutsDiHadronPID* trackcuts) {
-
-       if (!trackcuts) return;
-       if (!fTrackCuts) {
-               cout<<"ERROR: No Track Cuts array available! Check your constructor."<<endl;
-               return;
-       }
-
-       fTrackCuts->AddLast(trackcuts);
-    }
+// Managing Cuts.
+    void SetEventCuts(AliAODEventCutsDiHadronPID* eventcuts);
+    void AddTrackCuts(AliAODTrackCutsDiHadronPID* trackcuts);
 
+// Override from AliAnalysisTaskSE.
        void SetDebugLevel(const Int_t debuglvl);
 
 private:
@@ -71,6 +56,7 @@ private:
        Bool_t                                                  fVerbose;                                       // Verbose mode.
        Bool_t                                                  fCalculateTOFMismatch;          // Compute mismatch or not. (Needs input histograms!)
        Bool_t                                                  fUseMismatchFileFromHomeDir;// Take TOFmistmachHistos.root from the home dir, or take the one copied when submitting jobs
+       Bool_t                                                  fUseNSigmaOnPIDAxes;            // Uses NSigma on the PID axes of all histograms.
 
        // Event Cut Object (streamed!).
        AliAODEventCutsDiHadronPID*             fEventCuts;                                     // Event Cuts.
index 3494b1e6eee7fd3362844dc5c67ce778a89f8719..6852380ef601ac6d4345cb65255d41178f42dbe0 100644 (file)
@@ -26,6 +26,9 @@
 
 ClassImp(AliTrackDiHadronPID);
 
+Double_t AliTrackDiHadronPID::fSigmaTOFStd = 80.;      // Should perhaps be replaced with a 
+Double_t AliTrackDiHadronPID::fSigmaTPCStd = 3.5;   // function later.
+
 // -----------------------------------------------------------------------
 AliTrackDiHadronPID::AliTrackDiHadronPID():
        TObject(),
@@ -159,7 +162,7 @@ AliTrackDiHadronPID::AliTrackDiHadronPID(AliAODTrack* track, AliAODTrack* global
 
        if (track) {
                fAODTrack = track;
-               fAODEvent = track->GetAODEvent();
+               fAODEvent = const_cast<AliAODEvent*>(track->GetAODEvent());
        }
        if (globaltrack) fAODGlobalTrack = globaltrack;
        if (mcparticle) fAODMCParticle = mcparticle;
index 8d0159a5cae8dbe327ed1ccde925ff1e0fd298a4..4b31b6ce6d0aa052059d296e2deb3d309a19d0f9 100644 (file)
@@ -35,34 +35,13 @@ private:
 
 // Check functions.
 public:
-       Bool_t IsBasicTrackInfoAvailable() const { 
-               if (!fBasicInfoAvailable) cout<<"Basic Track Info not available."<<endl; 
-               return fBasicInfoAvailable;
-       }
-       Bool_t IsFlagInfoAvailable() const { 
-               if (!fFlagsAvailable) cout<<"Flag Info not available."<<endl; 
-               return fFlagsAvailable;
-       }
-       Bool_t IsDCAInfoAvailable() const { 
-               if (!fDCAInfoAvailable) cout<<"DCA Info not available."<<endl; 
-               return fDCAInfoAvailable;
-       }
-       Bool_t IsITSInfoAvailable() const { 
-               if (!fITSInfoAvailable) cout<<"ITS Info not available."<<endl; 
-               return fITSInfoAvailable;
-       }
-       Bool_t IsTPCInfoAvailable() const { 
-               if (!fTPCInfoAvailable) cout<<"TPC Info not available."<<endl; 
-               return fTPCInfoAvailable;
-       }
-       Bool_t IsTOFInfoAvailable() const { 
-               if (!fTOFInfoAvailable) cout<<"TOF Info not available."<<endl; 
-               return fTOFInfoAvailable;
-       }
-       Bool_t IsMCInfoAvailable() const { 
-               if (!fMCInfoAvailable) cout<<"MC Info not available."<<endl; 
-               return fMCInfoAvailable;
-       }                       
+       Bool_t IsBasicTrackInfoAvailable() const {return fBasicInfoAvailable;}
+       Bool_t IsFlagInfoAvailable() const {return fFlagsAvailable;}
+       Bool_t IsDCAInfoAvailable() const {return fDCAInfoAvailable;}
+       Bool_t IsITSInfoAvailable() const {return fITSInfoAvailable;}
+       Bool_t IsTPCInfoAvailable() const {return fTPCInfoAvailable;}
+       Bool_t IsTOFInfoAvailable() const {return fTOFInfoAvailable;}
+       Bool_t IsMCInfoAvailable() const {return fMCInfoAvailable;}                     
 
 public:
 // Getting Track Parameters. Functionality is the same as AOD track,
@@ -104,6 +83,13 @@ public:
                }
                return (fTOFsignal - fTOFsignalMinusExpected[species]);
        }
+       Double_t GetTOFsigmaExpected(Int_t species) {
+               if (species < 0 || species > 2) {
+                       cout<<"ERROR: Unknown species"<<endl;
+                       return -10e10;
+               }
+               return (GetTOFsignalMinusExpected(species)/GetNumberOfSigmasTOF(species));
+       }
        Double_t GetNumberOfSigmasTOF(Int_t species) const {
                if (species < 0 || species > 2) {
                        cout<<"ERROR: Unknown species"<<endl;
@@ -173,7 +159,7 @@ private:
 // Pointers to original Tracks etc (cannot be returned, will not be streamed/saved).
        AliAODTrack*            fAODTrack;                      //! Original AOD Track.
        AliAODTrack*            fAODGlobalTrack;        //! Corresponding Global AOD Track.
-       const AliAODEvent*      fAODEvent;                      //!     Original AOD Event.
+       AliAODEvent*            fAODEvent;                      //!     Original AOD Event.
        AliAODMCParticle*       fAODMCParticle;         //! Original MC Particle.
        AliPIDResponse*         fPIDResponse;           //!     Original PID Response.
 
@@ -228,7 +214,13 @@ private:
        Bool_t                          fIsSecondaryFromWeakDecay;
        Bool_t                          fIsSecondaryFromMaterial;
 
+// Static variables.
+public:
+       static Double_t         fSigmaTOFStd;
+       static Double_t         fSigmaTPCStd;
+
 // Debug.
+private:
        Int_t                           fDebug;                         // Debug flag.
 
        ClassDef(AliTrackDiHadronPID,1);