]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CORRFW/AliCFTrackKineCuts.cxx
updated for e-h analysis
[u/mrichter/AliRoot.git] / CORRFW / AliCFTrackKineCuts.cxx
index 89b4739f27bf37a8a3fda612290f86649779fa7a..929f454a1ee666dbeb9f73089a2b260f2a92e600 100644 (file)
@@ -360,15 +360,7 @@ void AliCFTrackKineCuts::Copy(TObject &c) const
   TNamed::Copy(c);
 }
 //__________________________________________________________________________________
-void AliCFTrackKineCuts::GetBitMap(TObject* obj, TBits *bitmap)  {
-  //
-  // retrieve the pointer to the bitmap
-  //
-  TBits *bm = SelectionBitMap(obj);
-  *bitmap = *bm;
-}
-//__________________________________________________________________________________
-TBits* AliCFTrackKineCuts::SelectionBitMap(TObject* obj) {
+void AliCFTrackKineCuts::SelectionBitMap(TObject* obj) {
   //
   // test if the track passes the single cuts
   // and store the information in a bitmap
@@ -377,66 +369,66 @@ TBits* AliCFTrackKineCuts::SelectionBitMap(TObject* obj) {
   // bitmap stores the decision of each single cut
   for(Int_t i=0; i<kNCuts; i++)fBitmap->SetBitNumber(i,kFALSE);
 
-  // cast TObject into VParticle
+  // check TObject and cast into VParticle
+  if (!obj) return  ;
+  if (!obj->InheritsFrom("AliVParticle")) AliError("object must derived from AliVParticle !");
   AliVParticle* particle = dynamic_cast<AliVParticle *>(obj);
-  if ( !particle ) return fBitmap ;
-
-  for(Int_t i=0; i<kNCuts; i++)fBitmap->SetBitNumber(i,kTRUE);
+  if ( !particle ) return;
 
   Int_t iCutBit = 0;
-  if((particle->P() < fMomentumMin) || (particle->P() > fMomentumMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if((particle->P() >= fMomentumMin) && (particle->P() <= fMomentumMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if ((particle->Pt() < fPtMin) || (particle->Pt() > fPtMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if ((particle->Pt() >= fPtMin) && (particle->Pt() <= fPtMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if ((particle->Px() < fPxMin) || (particle->Px() > fPxMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if ((particle->Px() >= fPxMin) && (particle->Px() <= fPxMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if ((particle->Py() < fPyMin) || (particle->Py() > fPyMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if ((particle->Py() >= fPyMin) && (particle->Py() <= fPyMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if ((particle->Pz() < fPzMin) || (particle->Pz() > fPzMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if ((particle->Pz() >= fPzMin) && (particle->Pz() <= fPzMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if ((particle->Eta() < fEtaMin) || (particle->Eta() > fEtaMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if ((particle->Eta() >= fEtaMin) && (particle->Eta() <= fEtaMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if ((particle->Y() < fRapidityMin) || (particle->Y() > fRapidityMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if ((particle->Y() >= fRapidityMin) && (particle->Y() <= fRapidityMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if ((particle->Phi() < fPhiMin) || (particle->Phi() > fPhiMax))
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if ((particle->Phi() >= fPhiMin) && (particle->Phi() <= fPhiMax))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if (fCharge < 10 && particle->Charge() != fCharge)
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if (fCharge >= 10 || (particle->Charge() == fCharge))
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if (fRequireIsCharged && particle->Charge()==0)
-       fBitmap->SetBitNumber(iCutBit,kFALSE);
+  if (fRequireIsCharged && particle->Charge()!=0)
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
+  if (!fRequireIsCharged)
+       fBitmap->SetBitNumber(iCutBit,kTRUE);
 
-  return fBitmap;
+  return;
 }
 //__________________________________________________________________________________
 Bool_t AliCFTrackKineCuts::IsSelected(TObject* obj) {
   //
   // loops over decisions of single cuts and returns if the track is accepted
   //
-  TBits* bitmap = SelectionBitMap(obj);
+  SelectionBitMap(obj);
 
+  if (fIsQAOn) FillHistograms(obj,0);
   Bool_t isSelected = kTRUE;
 
-  for (UInt_t icut=0; icut<bitmap->GetNbits();icut++)
-       if(!bitmap->TestBitNumber(icut)) isSelected = kFALSE;
-
-  return isSelected;
-}
-//__________________________________________________________________________________
-void AliCFTrackKineCuts::Init() {
-  //
-  // initialises all histograms and the TList which holds the histograms
-  //
-  if(fIsQAOn)
-    DefineHistograms();
+  for (UInt_t icut=0; icut<fBitmap->GetNbits();icut++) {
+    if(!fBitmap->TestBitNumber(icut)) {
+       isSelected = kFALSE;
+       break;
+    }
+  }
+  if (!isSelected) return kFALSE ;
+  if (fIsQAOn) FillHistograms(obj,1);
+  return kTRUE;
 }
 //__________________________________________________________________________________
 void AliCFTrackKineCuts::SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins)
@@ -611,10 +603,10 @@ void AliCFTrackKineCuts::SetHistogramBins(Int_t index, Int_t nbins, Double_t xmi
 
 
   // book QA histograms
-  Char_t str[256];
+  Char_t str[5];
   for (Int_t i=0; i<kNStepQA; i++) {
-    if (i==0) sprintf(str," ");
-    else sprintf(str,"_cut");
+    if (i==0) snprintf(str,5," ");
+    else snprintf(str,5,"_cut");
   
     fhQA[kCutP][i]     = new  TH1F(Form("%s_momentum%s",GetName(),str),        "",fhNBinsMomentum-1,fhBinLimMomentum);
     fhQA[kCutPt][i]    = new  TH1F(Form("%s_transverse_momentum%s",GetName(),str),"",fhNBinsPt-1,fhBinLimPt);
@@ -644,42 +636,36 @@ void AliCFTrackKineCuts::FillHistograms(TObject* obj, Bool_t b)
   //
   // fill the QA histograms
   //
-  if(!fIsQAOn) return;
 
   // cast TObject into VParticle
+  if (!obj) return;
   AliVParticle* particle = dynamic_cast<AliVParticle *>(obj);
   if ( !particle ) return;
 
-  // index = 0: fill histograms before cuts
-  // index = 1: fill histograms after cuts
-  Int_t index = -1;
-  index = ((b) ? 1 : 0);
-
-  fhQA[kCutP][index]->Fill(particle->P());
-  fhQA[kCutPt][index]->Fill(particle->Pt());
-  fhQA[kCutPx][index]->Fill(particle->Px());
-  fhQA[kCutPy][index]->Fill(particle->Py());
-  fhQA[kCutPz][index]->Fill(particle->Pz());
-  fhQA[kCutRapidity][index]->Fill(particle->Y());
-  fhQA[kCutEta][index]->Fill(particle->Eta());
-  fhQA[kCutPhi][index]->Fill(particle->Phi());
-  fhQA[kCutCharge][index]->Fill((float)particle->Charge());
+  // b = 0: fill histograms before cuts
+  // b = 1: fill histograms after cuts
+  fhQA[kCutP][b]->Fill(particle->P());
+  fhQA[kCutPt][b]->Fill(particle->Pt());
+  fhQA[kCutPx][b]->Fill(particle->Px());
+  fhQA[kCutPy][b]->Fill(particle->Py());
+  fhQA[kCutPz][b]->Fill(particle->Pz());
+  fhQA[kCutRapidity][b]->Fill(particle->Y());
+  fhQA[kCutEta][b]->Fill(particle->Eta());
+  fhQA[kCutPhi][b]->Fill(particle->Phi());
+  fhQA[kCutCharge][b]->Fill((float)particle->Charge());
 
   // fill cut statistics and cut correlation histograms with information from the bitmap
   if (b) return;
 
-  if (!obj) return;
-  TBits* bitmap = SelectionBitMap(obj);
-
   // Number of single cuts in this class
-  UInt_t ncuts = bitmap->GetNbits();
+  UInt_t ncuts = fBitmap->GetNbits();
   for(UInt_t bit=0; bit<ncuts;bit++) {
-    if (!bitmap->TestBitNumber(bit)) {
-       fhCutStatistics->Fill(bit+1);
-       for (UInt_t bit2=bit; bit2<ncuts;bit2++) {
-         if (!bitmap->TestBitNumber(bit2)) 
-           fhCutCorrelation->Fill(bit+1,bit2+1);
-       }
+    if (!fBitmap->TestBitNumber(bit)) {
+      fhCutStatistics->Fill(bit+1);
+      for (UInt_t bit2=bit; bit2<ncuts;bit2++) {
+        if (!fBitmap->TestBitNumber(bit2)) 
+          fhCutCorrelation->Fill(bit+1,bit2+1);
+      }
     }
   }
 }
@@ -857,11 +843,11 @@ void AliCFTrackKineCuts::DrawHistograms(Bool_t drawLogScale)
   canvas3->SaveAs(Form("%s.ps", canvas3->GetName()));
 }
 //__________________________________________________________________________________
-void AliCFTrackKineCuts::AddQAHistograms(TList *qaList) const {
+void AliCFTrackKineCuts::AddQAHistograms(TList *qaList) {
   //
   // saves the histograms in a TList
   //
-  if(!fIsQAOn) return;
+  DefineHistograms();
 
   qaList->Add(fhCutStatistics);
   qaList->Add(fhCutCorrelation);