]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Add the line to support the output tree; Change the type of the output histogram...
authormartinez <martinez@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Nov 2010 06:44:16 +0000 (06:44 +0000)
committermartinez <martinez@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 4 Nov 2010 06:44:16 +0000 (06:44 +0000)
PWG3/muon/AddTaskCFMuonSingle.C
PWG3/muon/AddTaskMuonsHF.C
PWG3/muon/AliAnalysisTaskSEMuonsHF.cxx
PWG3/muon/AliCFMuonSingleTask1.C
PWG3/muon/AliCFMuonSingleTask1.cxx
PWG3/muon/AliDimuInfoStoreRD.cxx
PWG3/muon/AliDimuInfoStoreRD.h
PWG3/muon/AliMuonInfoStoreRD.cxx
PWG3/muon/AliMuonInfoStoreRD.h
PWG3/muon/AliMuonsHFHeader.cxx
PWG3/muon/AliMuonsHFHeader.h

index ea56cf392d62bda4371158316076642e1882309e..8f8d078aec877788ac4a9ba6f65af6eb3885cba4 100644 (file)
@@ -21,10 +21,10 @@ AliCFMuonSingleTask1* AddTaskSingleMuonCF(Bool_t isMC=kTRUE)
     mgr->SetMCtruthEventHandler(mcHandler);
   }
 
-  enum             { kEta,  kY, kPhi, kPt, kP3, kHit, kChi2Fit, kTrM, kChi2TrM,  kContrN,  kVt,  kVz, kTrig, kDCA, kZcoor, kRabs, kCharge, kNVars };
-  Int_t  nBins[] = {   5 , 5  ,  45 , 60 ,150 ,  20 ,      20 ,  4  ,      20 ,     202 , 100 ,  100 ,  10 , 500 ,   1000,  100 ,   3             };
-  Double_t min[] = {  -4.,-4. ,-180.,  0.,  0.,   0.,       0., -0.5,       0.,     -2.5,   0., -100.,   0.,   0., -3000.,    0.,  -1.5           };
-  Double_t max[] = {-2.5.,-2.5, 180., 30.,150.,  20.,      20.,  3.5,      10.,    199.5, 200.,  100.,  10., 500.,  1000.,  100.,   1.5           };
+  enum             { kEta,  kY, kPhi, kPt, kP3, kHit, kChi2Fit, kTrM, kChi2TrM,  kContrN,  kVt,  kVz, kTrig, kDCA, kZcoor, kRabs, kCharge, kTheta,kNVars };
+  Int_t  nBins[] = {   5 , 5  ,  45 , 60 ,150 ,  20 ,      20 ,  4  ,      20 ,     202 , 100 ,  100 ,  10 , 500 ,   1000,    7 ,     3 , 100      };
+  Double_t min[] = {  -4.,-4. ,-180.,  0.,  0.,   0.,       0., -0.5,       0.,     -2.5,   0., -100.,   0.,   0., -3000.,  171.,  -1.5 , 2.95      };
+  Double_t max[] = {-2.5.,-2.5, 180., 30.,150.,  20.,      20.,  3.5,      10.,    199.5, 200.,  100.,  10., 500.,  1000.,  178.,   1.5 , 3.15     };
 
   Double_t *binLimits = 0;
   Int_t nSteps=1; if (isMC) nSteps=2;
index a5ff5aa4379e71a6c516a88c8ce134d9682641f7..978315b57004423252cd9816c77b2b7ca3e895b0 100644 (file)
@@ -39,8 +39,8 @@ AliAnalysisTaskSEMuonsHF* AddTaskMuonsHF(Int_t mode=0, Bool_t isMC=kFALSE, Bool_
                           999999.0,   //   7, DCAmax
                          -999999.0,   //   8, for trigger
                           999999.0,   //   9, for trigger
-                         -999999.0,   //  10, RabsEndMin
-                          999999.0,};  // 11, RabsEndMax
+                         -999999.0,   //  10, ThetaAbsEndMin
+                          999999.0,};  // 11, ThetaAbsEndMax
   Double_t cutsDimu[12]={-999999.0, 999999.0,  // single muon cuts used for dimuon selection
                          -999999.0, 999999.0,
                          -999999.0, 999999.0,
index 843d5034db64654edacd91aa9c1926ef11388790..a227a4478bb511f8f6e249dfe188207c86d0386e 100644 (file)
@@ -39,6 +39,7 @@
 #include "AliDimuInfoStoreRD.h"
 #include "AliDimuInfoStoreMC.h"
 #include "AliAnalysisTaskSEMuonsHF.h"
+#include "AliAnalysisManager.h"
 
 ClassImp(AliAnalysisTaskSEMuonsHF)
 
@@ -153,6 +154,7 @@ void AliAnalysisTaskSEMuonsHF::UserExec(Option_t *)
     } else { AliError("MC event not found. Nothing done!"); return; }
   }
 
+  if (fIsOutputTree) AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
   fHeader->SetEvent(((AliVVertex*)InputEvent()->GetPrimaryVertex()));
   fHeader->FillHistosEvnH(fListOutput);
 
index 3cf149765c62e130a4603f5f1d3a72faa78ce414..38d04b5e1f9a9bfce29973882d5e405d1a3cd7f6 100644 (file)
@@ -15,10 +15,10 @@ Bool_t AliCFMuonSingleTask1(Int_t runmin = 17, Int_t runmax = 17)
        analysisChain->Add(RunFile);
     }
 
-    enum             { kEta,  kY, kPhi, kPt, kP3, kHit, kChi2Fit, kTrM, kChi2TrM,  kContrN,  kVt,  kVz, kTrig, kDCA, kZcoor, kRabs, kCharge, kTheta, kNVars };
-    Int_t  nBins[] = {   5 , 5  ,  45 , 60 ,150 ,  20 ,      20 ,  4  ,      20 ,     202 , 100 ,  100 ,  10 , 500 ,   1000,  100 ,     3 , 100      };
-    Double_t min[] = {  -4.,-4. ,-180.,  0.,  0.,   0.,       0., -0.5,       0.,     -2.5,   0., -100.,   0.,   0., -3000.,    0.,  -1.5 , 2.95      };
-    Double_t max[] = {-2.5.,-2.5, 180., 30.,150.,  20.,      20.,  3.5,      10.,    199.5, 200.,  100.,  10., 500.,  1000.,  100.,   1.5 , 3.15     };
+    enum             { kEta,  kY, kPhi, kPt, kP3, kHit, kChi2Fit, kTrM, kChi2TrM,  kContrN,  kVt,  kVz, kTrig, kDCA, kZcoor, kRabs, kCharge, kTheta,kNVars };
+    Int_t  nBins[] = {   5 , 5  ,  45 , 60 ,150 ,  20 ,      20 ,  4  ,      20 ,     202 , 100 ,  100 ,  10 , 500 ,   1000,    7 ,     3 , 100      };
+    Double_t min[] = {  -4.,-4. ,-180.,  0.,  0.,   0.,       0., -0.5,       0.,     -2.5,   0., -100.,   0.,   0., -3000.,  171.,  -1.5 , 2.95      };
+    Double_t max[] = {-2.5.,-2.5, 180., 30.,150.,  20.,      20.,  3.5,      10.,    199.5, 200.,  100.,  10., 500.,  1000.,  178.,   1.5 , 3.15     };
     
     Double_t *binLimits = 0;
     Int_t nSteps=1; if (isMC) nSteps=2;
index d089ff4990d30ea39c51b75d7117a7f2b94dcfc4..3fb662a1a61b4ad26b9a3665639c57b236a796bc 100644 (file)
@@ -201,7 +201,7 @@ void AliCFMuonSingleTask1::UserExec(Option_t *)
 
              containerInput[7] = 3;
              containerInput[10] = rmc ; // radius at production      
-             containerInput[15] = 45 ;  // rabsmc
+             containerInput[15] = 175. ;  // rabsmc
              
              // fill the container at the first step
              fCFManager->GetParticleContainer()->Fill(containerInput,0);
@@ -272,10 +272,13 @@ void AliCFMuonSingleTask1::UserExec(Option_t *)
        Float_t rabs = mu1->GetRAtAbsorberEnd();
        Float_t thetar ;
        thetar = TMath::Abs(-TMath::Pi()+TMath::ASin(ptr/pr)); 
-  
+
 // rapidity and Pt cuts (default -4<y<-2.5 et 0<pt<20)
        if (!fCFManager->CheckParticleCuts(AliCFManager::kPartAccCuts,mu1)) continue;
 
+        Float_t thetaAbs = 180.*(1.-TMath::ATan(rabs/505.)/TMath::Pi());
+        if (thetaAbs<171 || thetaAbs>178) continue;
+
        containerInput[0] = etar ;   
        containerInput[1] = rapr ;   
        containerInput[2] = phir ;   
@@ -291,7 +294,7 @@ void AliCFMuonSingleTask1::UserExec(Option_t *)
        containerInput[12] = trig ;
        containerInput[13] = dcar ;
        containerInput[14] = zr ;
-       containerInput[15] = rabs ;
+       containerInput[15] = thetaAbs;
        containerInput[16] = charger ;
        containerInput[17] = thetar ;
 
index afb37d29a4329da0c72dbf3d2aa11320f2f77460..17d5ea734cef5de320510f0e3bc9703781cfa782 100644 (file)
@@ -126,7 +126,7 @@ void AliDimuInfoStoreRD::FillDimuInfo()
 }
 
 //-----------------------------------------------------------------------------
-Bool_t AliDimuInfoStoreRD::DimuSelection()
+Bool_t AliDimuInfoStoreRD::IsSelected()
 {
   // select dimuon candidates according to the corresponding two muon tracks cuts
 
@@ -135,8 +135,8 @@ Bool_t AliDimuInfoStoreRD::DimuSelection()
   AliMuonInfoStoreRD::SetSelectionCuts(AliDimuInfoStoreRD::fgCutd);
   AliMuonInfoStoreRD *trk0 = (AliMuonInfoStoreRD*)fMuonRef[0].GetObject();
   AliMuonInfoStoreRD *trk1 = (AliMuonInfoStoreRD*)fMuonRef[1].GetObject(); 
-  if (!trk0->MuonSelection()) { AliMuonInfoStoreRD::SetSelectionCuts(cutsOld); return kFALSE; }
-  if (!trk1->MuonSelection()) { AliMuonInfoStoreRD::SetSelectionCuts(cutsOld); return kFALSE; }
+  if (!trk0->IsSelected()) { AliMuonInfoStoreRD::SetSelectionCuts(cutsOld); return kFALSE; }
+  if (!trk1->IsSelected()) { AliMuonInfoStoreRD::SetSelectionCuts(cutsOld); return kFALSE; }
 
   AliMuonInfoStoreRD::SetSelectionCuts(cutsOld);
   return kTRUE;
index 234b2d008194262534c05fca6b2d14aef2fcdf0e..88a51f4d9a48d03d1491780b3fa64f64ef7c9346 100644 (file)
@@ -33,7 +33,7 @@ class AliDimuInfoStoreRD : public TObject {
   Short_t  Charge()   const { return fCharge;   }
   Double_t InvM()     const { return fInvM;     }
 
-  Bool_t DimuSelection();
+  Bool_t IsSelected();
 
   static const char* StdBranchName() { return fgkStdBranchName.Data(); }
   static void SetSelectionCuts(Double_t cuts[12]) { for (Int_t i=12; i--;) fgCutd[i]=cuts[i]; }
index 67d9a51fb4ca7c72a314fdbb473750fc7a712cde..2f0df7e5abbb828292b52baeab6b31ebba35a5a9 100644 (file)
@@ -177,7 +177,7 @@ void AliMuonInfoStoreRD::FillMuonInfo(AliESDMuonTrack *trk)
 }
 
 //-----------------------------------------------------------------------------
-Bool_t AliMuonInfoStoreRD::MuonSelection()
+Bool_t AliMuonInfoStoreRD::IsSelected()
 {
   // select muon tracks according to the selection cuts
 
@@ -196,8 +196,8 @@ Bool_t AliMuonInfoStoreRD::MuonSelection()
   Int_t trigger = this->MatchTrigger();
   if (trigger<AliMuonInfoStoreRD::fgCuts[8] || trigger>AliMuonInfoStoreRD::fgCuts[9]) return kFALSE;
 
-  Double_t rAbs = this->RabsEnd();
-  if (rAbs<AliMuonInfoStoreRD::fgCuts[10] || rAbs>AliMuonInfoStoreRD::fgCuts[11])     return kFALSE;
+  Double_t theta = 180.*(1.-TMath::ATan(this->RabsEnd()/505.)/TMath::Pi());
+  if (theta<AliMuonInfoStoreRD::fgCuts[10] || theta>AliMuonInfoStoreRD::fgCuts[11])   return kFALSE;
 
   return kTRUE;
 }
index 887b45fdcd3ddba0ffd0f7b2441925977db07bb9..d02ca8123274ccd1c2ca235b3dd790c515234f5a 100644 (file)
@@ -39,7 +39,7 @@ class AliMuonInfoStoreRD : public TObject {
   Double_t Chi2MatchTrigger() const { return fChi2MatchTrigger; }
   Double_t RabsEnd()          const { return fRabsEnd;          }
 
-  Bool_t MuonSelection();
+  Bool_t IsSelected();
 
   static const char* StdBranchName()                  { return fgkStdBranchName.Data(); }
   static void SelectionCust(Double_t cuts[12])  { for (Int_t i=12; i--;) cuts[i]=fgCuts[i]; }
index a24fc4d3eb84668dee66b9956e18bea3bc260442..172349de7690b190d67a30c9def9c44d89e78f92 100644 (file)
@@ -23,7 +23,7 @@
 
 #include <TMath.h>
 #include <TH1.h>
-#include <TH1F.h>
+#include <TH1D.h>
 #include <TList.h>
 
 #include "AliMuonInfoStoreRD.h"
@@ -33,7 +33,7 @@
 #include "AliMuonsHFHeader.h"
 
 class TNamed;
-class AliESDVertex;
+class AliVVertex;
 
 ClassImp(AliMuonsHFHeader)
 
@@ -103,7 +103,7 @@ void AliMuonsHFHeader::SetEvent(AliVVertex *vertex)
 }
 
 //_____________________________________________________________________________
-Bool_t AliMuonsHFHeader::EventSelection()
+Bool_t AliMuonsHFHeader::IsSelected()
 {
   // select event according to the event selection cuts
   if (this->VtxContrsN()<fgCuts[0])     return kFALSE;
@@ -154,9 +154,9 @@ void AliMuonsHFHeader::CreateHistosEvnH(TList *list)
   Double_t xlow[nHistos] = {  -40.,    0.,         -2.5 };
   Double_t  xup[nHistos] = {   40.,    4.,        199.5 };
 
-  TH1F *histo = 0;
+  TH1D *histo = 0;
   for (Int_t i=0; i<nHistos; i++) {
-    histo = new TH1F(tname[i], tname[i].Data(), nbins[i], xlow[i], xup[i]);
+    histo = new TH1D(tname[i], tname[i].Data(), nbins[i], xlow[i], xup[i]);
     histo->Sumw2(); list->Add(histo); histo = 0;
   }
 
@@ -176,14 +176,14 @@ void AliMuonsHFHeader::CreateHistosMuon(TList *list, TString sName)
   
   const Int_t nHistos = 8;
   TString tName[nHistos] = {   "P",  "Pt",  "Eta",  "DCA",  "TrM",  "Charge", "Rabs", "UnfVtx" };
-  Int_t   nbins[nHistos] = { 1500 ,  300 ,   100 ,   500 ,    4  ,       3  ,   300 ,      80  };
-  Double_t xlow[nHistos] = {    0.,    0.,   -10.,     0.,   -0.5,      -1.5,     0.,     -40. };
-  Double_t  xup[nHistos] = {  150.,   30.,     0.,   500.,    3.5,       1.5,   150.,      40. };
+  Int_t   nbins[nHistos] = { 1500 ,  300 ,    15 ,  1000 ,    4  ,       3  ,    48 ,      80  };
+  Double_t xlow[nHistos] = {    0.,    0.,   -4.0,     0.,   -0.5,      -1.5,   17.6,     -40. };
+  Double_t  xup[nHistos] = {  150.,   30.,   -2.5,   500.,    3.5,       1.5,   80.0,      40. };
 
-  TH1F *histo = 0;
+  TH1D *histo = 0;
   for (Int_t i=0; i<nHistos; i++) {
     char *hName = Form("h%s_%s", sName.Data(), tName[i].Data());
-    histo = new TH1F(hName, hName, nbins[i], xlow[i], xup[i]);
+    histo = new TH1D(hName, hName, nbins[i], xlow[i], xup[i]);
     histo->Sumw2(); list->Add(histo); histo = 0;
   }
 
@@ -201,7 +201,7 @@ void AliMuonsHFHeader::CreateHistosDimu(TList *list, TString sName)
   Bool_t oldStatus = TH1::AddDirectoryStatus();
   TH1::AddDirectory(kFALSE);
 
-  TH1F *histo = 0;
+  TH1D *histo = 0;
   const Int_t nHistos = 3;
   TString tName[nHistos] = {   "P",  "Pt",  "InvM"   };
   Int_t   nbins[nHistos] = { 1500 ,  300 ,    300    };
@@ -211,7 +211,7 @@ void AliMuonsHFHeader::CreateHistosDimu(TList *list, TString sName)
   for (Int_t i=0; i<3; i++) {
     for (Int_t j=0; j<nHistos; j++) {
       char *hName = Form("h%s_%s_%s", sName.Data(), dimuName[i].Data(), tName[j].Data());
-      histo = new TH1F(hName, hName, nbins[j], xlow[j], xup[j]);
+      histo = new TH1D(hName, hName, nbins[j], xlow[j], xup[j]);
       histo->Sumw2(); list->Add(histo); histo = 0;
     }
   }
@@ -226,12 +226,12 @@ void AliMuonsHFHeader::FillHistosEvnH(TList *list)
   // fill histograms at event level according to event selection cuts
 
   if (!list)                   return;
-  if (!this->EventSelection()) return;
+  if (!this->IsSelected()) return;
 
   const Int_t    nHistos = 3;
   TString tname[nHistos] = {      "hVz",      "hVt",       "hVtxNcontr" };
   Double_t dist[nHistos] = { this->Vz(), this->Vt(), this->VtxContrsN() };
-  for (Int_t i=nHistos; i--;) ((TH1F*)list->FindObject(tname[i].Data()))->Fill(dist[i]);
+  for (Int_t i=nHistos; i--;) ((TH1D*)list->FindObject(tname[i].Data()))->Fill(dist[i]);
   return;
 }
 
@@ -240,9 +240,9 @@ void AliMuonsHFHeader::FillHistosMuon(TList *list, AliMuonInfoStoreRD* const inf
 {
   // fill histograms for single muon according to event & muon track selection cuts
 
-  if (!list)                       return;
-  if (!this->EventSelection())     return;
-  if (!infoStore->MuonSelection()) return;
+  if (!list)                    return;
+  if (!this->IsSelected())      return;
+  if (!infoStore->IsSelected()) return;
 
   const Int_t nHistos    = 8;
   TString tName[nHistos] = { "P", "Pt", "Eta", "DCA", "TrM", "Charge", "Rabs", "UnfVtx" };
@@ -254,11 +254,11 @@ void AliMuonsHFHeader::FillHistosMuon(TList *list, AliMuonInfoStoreRD* const inf
                              infoStore->Charge(),
                              infoStore->RabsEnd(),
                              this->Vz() };
-  for (Int_t i=nHistos; i--;) ((TH1F*)list->FindObject(Form("h%s_%s","",tName[i].Data())))->Fill(dist[i]);
+  for (Int_t i=nHistos; i--;) ((TH1D*)list->FindObject(Form("h%s_%s","",tName[i].Data())))->Fill(dist[i]);
 
   if (fgIsMC && src>=0) {
     TString sName[6] = { "BottomMu", "CharmMu", "PrimaryMu", "SecondaryMu", "Hadron", "Unidentified" };
-    for (Int_t i=nHistos; i--;) ((TH1F*)list->FindObject(Form("h%s_%s",sName[src].Data(),tName[i].Data())))->Fill(dist[i]);
+    for (Int_t i=nHistos; i--;) ((TH1D*)list->FindObject(Form("h%s_%s",sName[src].Data(),tName[i].Data())))->Fill(dist[i]);
   }
 
   return; 
@@ -269,9 +269,9 @@ void AliMuonsHFHeader::FillHistosDimu(TList *list, AliDimuInfoStoreRD* const inf
 {
   // fill histograms for dimuon according to evnet & dimuon candidates selection cuts
 
-  if (!list)                       return;
-  if (!this->EventSelection())     return;
-  if (!infoStore->DimuSelection()) return;
+  if (!list)                    return;
+  if (!this->IsSelected())      return;
+  if (!infoStore->IsSelected()) return;
 
   TString dimuName = "DimuNN";
   if (infoStore->Charge()==0)     dimuName = "DimuNP";
@@ -282,11 +282,11 @@ void AliMuonsHFHeader::FillHistosDimu(TList *list, AliDimuInfoStoreRD* const inf
   Double_t dist[nHistos] = { infoStore->Momentum().Mag(),
                              infoStore->Momentum().Pt(),
                              infoStore->InvM() };
-  for (Int_t i=nHistos; i--;) ((TH1F*)list->FindObject(Form("h%s_%s_%s","",dimuName.Data(),tName[i].Data())))->Fill(dist[i]);
+  for (Int_t i=nHistos; i--;) ((TH1D*)list->FindObject(Form("h%s_%s_%s","",dimuName.Data(),tName[i].Data())))->Fill(dist[i]);
 
   if (fgIsMC && src>=0) {
     TString sName[6] = { "BBdiff", "BBsame", "DDdiff", "DDsame", "Resonance", "Uncorr" };
-    for (Int_t i=nHistos; i--;) ((TH1F*)list->FindObject(Form("h%s_%s_%s",sName[src].Data(),dimuName.Data(),tName[i].Data())))->Fill(dist[i]);
+    for (Int_t i=nHistos; i--;) ((TH1D*)list->FindObject(Form("h%s_%s_%s",sName[src].Data(),dimuName.Data(),tName[i].Data())))->Fill(dist[i]);
   }
 
   return;
index f0392f7ba3b62a19dac52c138666d2b204805277..54db985a76627e8687bbed3cb640a1b00a847a6a 100644 (file)
@@ -42,7 +42,7 @@ class AliMuonsHFHeader : public TNamed {
 
   void SetEvent(AliVVertex *vertex);
   void SetFiredTriggerClass(TString trigger) { fFiredTriggerClass=trigger; }
-  Bool_t EventSelection();
+  Bool_t IsSelected();
 
   void CreateHistograms(TList *list);
   void FillHistosEvnH(TList *list);