]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliRDHFCuts.cxx
Bug fix (Francesco)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliRDHFCuts.cxx
index 8e8f000a00ab8869cd726e92d129daa6b448b017..c50e946c8b0ff58326ef4e6e39a6dd459e1c0f29 100644 (file)
@@ -57,7 +57,10 @@ fIsUpperCut(0),
 fUsePID(kFALSE),
 fPidHF(0),
 fWhyRejection(0),
-fRemoveDaughtersFromPrimary(kFALSE)
+fRemoveDaughtersFromPrimary(kFALSE),
+fOptPileup(0),
+fMinContrPileup(3),
+fMinDzPileup(0.6)
 {
   //
   // Default Constructor
@@ -85,7 +88,10 @@ AliRDHFCuts::AliRDHFCuts(const AliRDHFCuts &source) :
   fUsePID(source.fUsePID),
   fPidHF(0),
   fWhyRejection(source.fWhyRejection),
-  fRemoveDaughtersFromPrimary(source.fRemoveDaughtersFromPrimary)
+  fRemoveDaughtersFromPrimary(source.fRemoveDaughtersFromPrimary),
+  fOptPileup(source.fOptPileup),
+  fMinContrPileup(source.fMinContrPileup),
+  fMinDzPileup(source.fMinDzPileup)  
 {
   //
   // Copy constructor
@@ -123,6 +129,9 @@ AliRDHFCuts &AliRDHFCuts::operator=(const AliRDHFCuts &source)
   SetPidHF(source.GetPidHF());
   fWhyRejection=source.fWhyRejection;
   fRemoveDaughtersFromPrimary=source.fRemoveDaughtersFromPrimary;
+  fOptPileup=source.fOptPileup;
+  fMinContrPileup=source.fMinContrPileup;
+  fMinDzPileup=source.fMinDzPileup;
 
   if(source.GetTrackCuts()) AddTrackCuts(source.GetTrackCuts());
   if(source.fPtBinLimits) SetPtBins(source.fnPtBinLimits,source.fPtBinLimits);
@@ -152,14 +161,18 @@ AliRDHFCuts::~AliRDHFCuts() {
   }
 }
 //---------------------------------------------------------------------------
-Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) const {
+Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) {
   //
   // Event selection
   // 
   //if(fTriggerMask && event->GetTriggerMask()!=fTriggerMask) return kFALSE;
 
+  fWhyRejection=0;
+
   // multiplicity cuts no implemented yet
 
+
+
   const AliVVertex *vertex = event->GetPrimaryVertex();
 
   if(!vertex) return kFALSE;
@@ -170,6 +183,20 @@ Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) const {
 
   if(vertex->GetNContributors()<fMinVtxContr) return kFALSE; 
 
+  // switch to settings for 1-pad cls in TPC
+  if(fPidHF) {
+    if(event->GetRunNumber()>121693) fPidHF->SetOnePad(kTRUE);
+  }
+
+  if(fOptPileup==kRejectPileupEvent){
+    Int_t cutc=(Int_t)fMinContrPileup;
+    Double_t cutz=(Double_t)fMinDzPileup;
+    if(event->IsPileupFromSPD(cutc,cutz,3.,2.,10.)) {
+      fWhyRejection=1;
+      return kFALSE;
+    }
+  }
+
   return kTRUE;
 }
 //---------------------------------------------------------------------------
@@ -214,6 +241,11 @@ Bool_t AliRDHFCuts::IsDaughterSelected(AliAODTrack *track,const AliESDVertex *pr
   esdTrack.RelateToVertex(primary,0.,3.); 
   if(!cuts->IsSelected(&esdTrack)) retval = kFALSE;
  
+  if(fOptPileup==kRejectTracksFromPileupVertex){
+    // to be implemented
+    // we need either to have here the AOD Event, 
+    // or to have the pileup vertex object
+  }
   return retval; 
 }
 //---------------------------------------------------------------------------
@@ -477,14 +509,15 @@ Bool_t AliRDHFCuts::CompareCuts(const AliRDHFCuts *obj) const {
   if(fUsePID!=obj->fUsePID) { printf("Use PID %d  %d\n",(Int_t)fUsePID,(Int_t)obj->fUsePID); areEqual=kFALSE;}
 
   if(fRemoveDaughtersFromPrimary!=obj->fRemoveDaughtersFromPrimary) {printf("Remove daughters from vtx %d  %d\n",(Int_t)fRemoveDaughtersFromPrimary,(Int_t)obj->fRemoveDaughtersFromPrimary); areEqual=kFALSE;}
+  if(fTrackCuts){
+    if(fTrackCuts->GetMinNClusterTPC()!=obj->fTrackCuts->GetMinNClusterTPC()) {printf("MinNClsTPC %d  %d\n",fTrackCuts->GetMinNClusterTPC(),obj->fTrackCuts->GetMinNClusterTPC()); areEqual=kFALSE;}
 
-  if(fTrackCuts->GetMinNClusterTPC()!=obj->fTrackCuts->GetMinNClusterTPC()) {printf("MinNClsTPC %d  %d\n",fTrackCuts->GetMinNClusterTPC(),obj->fTrackCuts->GetMinNClusterTPC()); areEqual=kFALSE;}
-
-  if(fTrackCuts->GetMinNClustersITS()!=obj->fTrackCuts->GetMinNClustersITS()) {printf("MinNClsITS %d  %d\n",fTrackCuts->GetMinNClustersITS(),obj->fTrackCuts->GetMinNClustersITS()); areEqual=kFALSE;}
+    if(fTrackCuts->GetMinNClustersITS()!=obj->fTrackCuts->GetMinNClustersITS()) {printf("MinNClsITS %d  %d\n",fTrackCuts->GetMinNClustersITS(),obj->fTrackCuts->GetMinNClustersITS()); areEqual=kFALSE;}
 
-  if(TMath::Abs(fTrackCuts->GetMaxChi2PerClusterTPC()-obj->fTrackCuts->GetMaxChi2PerClusterTPC())>1.e-10) {printf("MaxChi2ClsTPC %f  %f\n",fTrackCuts->GetMaxChi2PerClusterTPC(),obj->fTrackCuts->GetMaxChi2PerClusterTPC()); areEqual=kFALSE;}
+    if(TMath::Abs(fTrackCuts->GetMaxChi2PerClusterTPC()-obj->fTrackCuts->GetMaxChi2PerClusterTPC())>1.e-10) {printf("MaxChi2ClsTPC %f  %f\n",fTrackCuts->GetMaxChi2PerClusterTPC(),obj->fTrackCuts->GetMaxChi2PerClusterTPC()); areEqual=kFALSE;}
 
-  if(fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)!=obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)) {printf("ClusterReq SPD %d  %d\n",fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD),obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)); areEqual=kFALSE;}
+    if(fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)!=obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)) {printf("ClusterReq SPD %d  %d\n",fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD),obj->fTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD)); areEqual=kFALSE;}
+  }
 
   if(fCutsRD) {
    for(Int_t iv=0;iv<fnVars;iv++) {
@@ -499,3 +532,39 @@ Bool_t AliRDHFCuts::CompareCuts(const AliRDHFCuts *obj) const {
 
   return areEqual;
 }
+//---------------------------------------------------------------------------
+void AliRDHFCuts::MakeTable() const {
+  //
+  // print cuts values in table format
+  // 
+
+       TString ptString = "pT range";
+       if(fVarNames && fPtBinLimits && fCutsRD){
+               TString firstLine(Form("*       %-15s",ptString.Data()));
+               for (Int_t ivar=0; ivar<fnVars; ivar++){
+                       firstLine+=Form("*    %-15s  ",fVarNames[ivar].Data());
+                       if (ivar == fnVars){
+                               firstLine+="*\n";
+                       }
+               }
+               Printf("%s",firstLine.Data());
+               
+               for (Int_t ipt=0; ipt<fnPtBins; ipt++){
+                       TString line;
+                       if (ipt==fnPtBins-1){
+                               line=Form("*  %5.1f < pt < inf    ",fPtBinLimits[ipt]);
+                       }
+                       else{
+                               line=Form("*  %5.1f < pt < %4.1f   ",fPtBinLimits[ipt],fPtBinLimits[ipt+1]);
+                       }
+                       for (Int_t ivar=0; ivar<fnVars; ivar++){
+                               line+=Form("*     %-15f ",fCutsRD[GetGlobalIndex(ivar,ipt)]);
+                       }
+                       Printf("%s",line.Data());
+               }
+
+       }
+
+
+  return;
+}