]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx
Added TPC crossed rows customizable cuts and values; added TOF deltas values
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutSetDaughterParticle.cxx
index ea095070ff3c933ce72025d7be67b69c436ab94e..a2d9d827a67ab6e8d609207777dbcc21ca84a3dc 100644 (file)
@@ -24,10 +24,13 @@ AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() :
    fNsigmaTOF(1E20),
    fCutQuality(0x0),
    fAODTrkCutFilterBit(0),
-   fCheckOnlyFilterBit(kTRUE)
+   fCheckOnlyFilterBit(kTRUE),
+   fUseCustomQualityCuts(kFALSE)  
 {
    //
    // Default constructor
+  SetPtRange(0.0, 1E20);
+  SetEtaRange(1E20, 1E20);
 }
 
 //__________________________________________________________________________________________________
@@ -39,32 +42,89 @@ AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, Ali
    fNsigmaTOF(nSigmaFast),
    fCutQuality(new AliRsnCutTrackQuality("CutQuality")),
    fAODTrkCutFilterBit(AODfilterBit),
-   fCheckOnlyFilterBit(kTRUE)
+   fCheckOnlyFilterBit(kTRUE),
+   fUseCustomQualityCuts(kFALSE)
 {
    //
    // Constructor
    //
+  //set here pt and eta range
+  SetPtRange(0.15, 20.0);
+  SetEtaRange(-0.8, 0.8);
+  
+  //if nsigma not specified, sets "no-PID" cuts
   if (nSigmaFast<=0){
     fNsigmaTPC=1e20;
     fNsigmaTOF=1e20;
     AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
-  } 
+  }   
+
+  //initialize quality std and PID cuts
+  InitStdQualityCuts();
   Init();
 }
 
+//__________________________________________________________________________________________________
+AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutTrackQuality *rsnTrackQualityCut, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0) :
+  AliRsnCutSet(name, AliRsnTarget::kDaughter),
+  fPID(pid),
+  fAppliedCutSetID(cutSetID),
+  fNsigmaTPC(nSigmaFast),
+  fNsigmaTOF(nSigmaFast),
+  fCutQuality(rsnTrackQualityCut),
+  fAODTrkCutFilterBit(0),
+  fCheckOnlyFilterBit(kFALSE),
+  fUseCustomQualityCuts(kTRUE)
+{
+  //
+  // Constructor: uses externally-defined track-quality cut object
+  //
+  if (!rsnTrackQualityCut) {
+    //if external track quality cut object not defined,
+    //sets default track quality to be initialised +
+    //sets here pt and eta cuts
+    InitStdQualityCuts();
+    SetPtRange(0.15, 20.0);
+    SetEtaRange(-0.8, 0.8);
+  } else {
+    //checks validity of passed quality-cut object
+    //if Ok, inherits all cuts including Pt and Eta cut
+    fCheckOnlyFilterBit=kFALSE;
+    fUseCustomQualityCuts = kTRUE;
+    SetPtRange(rsnTrackQualityCut->GetPtRange(0), rsnTrackQualityCut->GetPtRange(1));
+    SetEtaRange(rsnTrackQualityCut->GetEtaRange(0),rsnTrackQualityCut->GetEtaRange(1));
+    AliInfo("Custom quality cuts applied");
+    rsnTrackQualityCut->Print();
+  } 
+  
+  //if nsigma not specified, sets "no-PID" cuts
+  if (nSigmaFast<=0){
+    fNsigmaTPC=1e20;
+    fNsigmaTOF=1e20;
+    AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
+  } 
+  
+  //initialize PID cuts
+  Init(); 
+}
+
+
 //__________________________________________________________________________________________________
 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle &copy) :
-   AliRsnCutSet(copy),
-   fPID(copy.fPID),
-   fAppliedCutSetID(copy.fAppliedCutSetID),
-   fNsigmaTPC(copy.fNsigmaTPC),
-   fNsigmaTOF(copy.fNsigmaTOF),
-   fCutQuality(copy.fCutQuality),
-   fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit),
-   fCheckOnlyFilterBit(copy.fCheckOnlyFilterBit)
+  AliRsnCutSet(copy),
+  fPID(copy.fPID),
+  fAppliedCutSetID(copy.fAppliedCutSetID),
+  fNsigmaTPC(copy.fNsigmaTPC),
+  fNsigmaTOF(copy.fNsigmaTOF),
+  fCutQuality(copy.fCutQuality),
+  fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit),
+  fCheckOnlyFilterBit(copy.fCheckOnlyFilterBit),
+  fUseCustomQualityCuts(copy.fUseCustomQualityCuts)
 {
-   //
-   // copy constructor
+  //
+  // copy constructor
+  SetPtRange(copy.fPtRange[0], copy.fPtRange[1]);
+  SetEtaRange(copy.fEtaRange[0], copy.fEtaRange[1]);
 }
 
 //__________________________________________________________________________________________________
@@ -82,6 +142,7 @@ AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliR
    fNsigmaTOF=copy.fNsigmaTOF;
    fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit;
    fCheckOnlyFilterBit=copy.fCheckOnlyFilterBit;
+   fUseCustomQualityCuts=copy.fUseCustomQualityCuts;
    fCutQuality=copy.fCutQuality;
    return (*this);
 }
@@ -95,49 +156,26 @@ AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle()
    if (fCutQuality)
       delete fCutQuality;
 }
+
 //----------------------------------------------------------------------------
 void AliRsnCutSetDaughterParticle::Init()
 {
-  //
-   // init cut sets by setting variable params
-   //
-  if ( (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) ||
-       (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis
-       (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) ||
-       (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) ||
-       (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) ||
-       (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011) ||
-       (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011) ) 
-    {
-      fCutQuality->SetDefaults2011();
-      fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
-    } else {
-    fCutQuality->SetDefaults2010();
-    fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
-    fCutQuality->SetDCAZmax(2.0);
-    fCutQuality->SetSPDminNClusters(1);
-    fCutQuality->SetITSminNClusters(0);
-    fCutQuality->SetITSmaxChi2(36);
-    fCutQuality->SetTPCminNClusters(70);
-    fCutQuality->SetTPCmaxChi2(4.0);
-    fCutQuality->SetRejectKinkDaughters();
-    fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
-    //fCutQuality->SetITSmaxChi2(36);
-    //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
-  }
-  fCutQuality->SetCheckOnlyFilterBit(fCheckOnlyFilterBit);
-  fCutQuality->SetPtRange(0.15, 20.0);
-  fCutQuality->SetEtaRange(-0.8, 0.8);
   
+  //define TOF match cut
   AliRsnCutTOFMatch  *iCutTOFMatch     = new AliRsnCutTOFMatch("CutTOFMatch");
-   AliRsnCutPIDNSigma *iCutTPCNSigma    = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
-   AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
-   AliRsnCutPIDNSigma *iCutTOFNSigma    = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
-   AliRsnCutPhi  *iCutPhiTRD2010        = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF");
-   AliRsnCutPhi  *iCutPhiNoTRD2010      = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF");
-   
-   switch (fAppliedCutSetID)
-   {
+  //define PID cuts
+  AliRsnCutPIDNSigma *iCutTPCNSigma    = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
+  AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
+  AliRsnCutPIDNSigma *iCutTOFNSigma    = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
+  //define phi (azimuthal angle) cuts for TRD presence
+  AliRsnCutPhi  *iCutPhiTRD2010        = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF");
+  AliRsnCutPhi  *iCutPhiNoTRD2010      = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF");
+  
+  //
+  //defines cut schemes by combining quality cuts and PID cuts
+  //
+  switch (fAppliedCutSetID)
+    {
       case AliRsnCutSetDaughterParticle::kNoCuts :
          AliInfo("No cuts applied to daughter particle");
          break;
@@ -410,4 +448,49 @@ void AliRsnCutSetDaughterParticle::Init()
 }
 
 
+//-----------------------------------------------
+void AliRsnCutSetDaughterParticle::PrintTrackQualityCuts()
+{
+  //Prints track quality cuts
+  fCutQuality->Print();
+  return;
+}
 
+//-----------------------------------------------
+void AliRsnCutSetDaughterParticle::InitStdQualityCuts()
+{
+  // initialize quality std (if not externally defined) and PID cuts
+  // init cut sets by setting variable params
+  // 
+  Bool_t isUse2011stdQualityCuts = ((fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) ||
+                                   (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis
+                                   (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) ||
+                                   (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) ||
+                                   (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) ||
+                                   (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011) ||
+                                   (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011));
+  if (isUse2011stdQualityCuts) {
+    fCutQuality->SetDefaults2011();//uses filter bit 10 as default
+    fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit); //changes default filter bit 10 to the chosen filter bit
+  } else {
+    fCutQuality->SetDefaults2010();
+    fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
+    fCutQuality->SetDCAZmax(2.0);
+    fCutQuality->SetSPDminNClusters(1);
+    fCutQuality->SetITSminNClusters(0);
+    fCutQuality->SetITSmaxChi2(36);
+    fCutQuality->SetTPCminNClusters(70);
+    fCutQuality->SetTPCmaxChi2(4.0);
+    fCutQuality->SetRejectKinkDaughters();
+    fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
+    //fCutQuality->SetITSmaxChi2(36);
+    //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
+  }
+  
+  //apply pt and eta cuts
+  fCutQuality->SetPtRange(fPtRange[0], fPtRange[1]);
+  fCutQuality->SetEtaRange(fEtaRange[0], fEtaRange[1]);
+  AliInfo("Standard quality cuts applied");
+  fCutQuality->Print();
+  return;
+}