X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FMUONefficiency.C;h=42838a8e859bc988e4689138118ceb17eb14f814;hb=29b61d4390fa432b3e031aa6cce34337bf0d2f6d;hp=6ffc50cdcfeff5d264470e2b392749eb58fc44c0;hpb=1c2bdf000acd2a25cf2e6fc951bbd97361fcd52a;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/MUONefficiency.C b/MUON/MUONefficiency.C index 6ffc50cdcfe..42838a8e859 100644 --- a/MUON/MUONefficiency.C +++ b/MUON/MUONefficiency.C @@ -15,28 +15,41 @@ /* $Id$ */ -// Macro (upgraded version of MUONmassPlot_ESD.C, better handling of Jpsi) to make : -// 1) Ntuple (Ktuple) containing Upsilon kinematics variables (from kinematics.root files) -// 2) Ntuple (ESDtuple) containing Upsilon kinematics variables from reconstruction and -// combinations of 2 muons with opposite charges (ESDtupleBck will be used later) -// 3) Some QA histograms -// Ntuple are stored in the file MUONefficiency.root and ESD tree and QA histograms in AliESDs.root +/// \ingroup macros +/// \file MUONefficiency.C +/// \brief add brief description +/// +/// Macro (upgraded version of MUONmassPlot_ESD.C, better handling of Jpsi) to make : +/// - Ntuple (Ktuple) containing Upsilon kinematics variables (from kinematics.root files) +/// - Ntuple (ESDtuple) containing Upsilon kinematics variables from reconstruction and +/// combinations of 2 muons with opposite charges (ESDtupleBck will be used later) +/// - Some QA histograms +/// Ntuple are stored in the file MUONefficiency.root and ESD tree and QA histograms in AliESDs.root +/// +/// \author Christophe Suire, IPN Orsay -// Christophe Suire, IPN Orsay +#if !defined(__CINT__) || defined(__MAKECINT__) -// Arguments: -// FirstEvent (default 0) -// LastEvent (default 1.e6) -// ResType (default 553) -// 553 for Upsilon, 443 for J/Psi -// Chi2Cut (default 100) -// to keep only tracks with chi2 per d.o.f. < Chi2Cut - +// MUON includes +#include "AliMUONTrackParam.h" +#include "AliMUONTrackExtrap.h" +#include "AliMUONESDInterface.h" +// STEER includes +#include "AliRun.h" +#include "AliRunLoader.h" +#include "AliHeader.h" +#include "AliLoader.h" +#include "AliStack.h" +#include "AliMagF.h" +#include "AliESDEvent.h" +#include "AliESDVertex.h" +#include "AliTracker.h" +#include "AliCDBManager.h" +#include "AliESDMuonTrack.h" -#if !defined(__CINT__) || defined(__MAKECINT__) // ROOT includes #include "TTree.h" #include "TNtuple.h" @@ -52,34 +65,28 @@ #include #include #include +#include -// STEER includes -#include "AliRun.h" -#include "AliRunLoader.h" -#include "AliHeader.h" -#include "AliLoader.h" -#include "AliStack.h" -#include "AliMagFMaps.h" -#include "AliESDEvent.h" -#include "AliTracker.h" - -// MUON includes -#include "AliMUONTrackParam.h" -#include "AliMUONTrackExtrap.h" -#include "AliESDMuonTrack.h" #endif -// Arguments: -// ExtrapToVertex (default -1) -// <0: no extrapolation; -// =0: extrapolation to (0,0,0); -// >0: extrapolation to ESDVertex if available, else to (0,0,0) -// ResType (default 553) -// 553 for Upsilon, anything else for J/Psi - Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geometry.root", char* esdFileName = "AliESDs.root", Int_t ExtrapToVertex = -1, Int_t ResType = 553, Int_t FirstEvent = 0, Int_t LastEvent = 1000000 ) -{ // MUONefficiency starts +{ +/// \param ExtrapToVertex (default -1) +/// - <0: no extrapolation; +/// - =0: extrapolation to (0,0,0); +/// - >0: extrapolation to ESDVertex if available, else to (0,0,0) +/// \param ResType 553 for Upsilon, 443 for J/Psi (default 553) +/// \param FirstEvent (default 0) +/// \param LastEvent (default 1.e6) +/// \param Chi2Cut to keep only tracks with chi2 per d.o.f. < Chi2Cut (default 100) + + + // MUONefficiency starts + + // Set default CDB storage + AliCDBManager* man = AliCDBManager::Instance(); + man->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); Double_t MUON_MASS = 0.105658369; Double_t UPSILON_MASS = 9.4603 ; @@ -174,6 +181,8 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom Double_t fXVertex=0; Double_t fYVertex=0; Double_t fZVertex=0; + Double_t errXVtx=0; + Double_t errYVtx=0; Double_t fPxRec1, fPyRec1, fPzRec1, fE1; Double_t fPxRec2, fPyRec2, fPzRec2, fE2; @@ -196,9 +205,14 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom // set mag field // waiting for mag field in CDB - printf("Loading field map...\n"); - AliMagFMaps* field = new AliMagFMaps("Maps","Maps", 1, 1., 10., AliMagFMaps::k5kG); - AliTracker::SetFieldMap(field, kFALSE); + if (!TGeoGlobalMagField::Instance()->GetField()) { + printf("Loading field map...\n"); + AliMagF* field = new AliMagF("Maps","Maps",2,1.,1., 10.,AliMagF::k5kG); + TGeoGlobalMagField::Instance()->SetField(field); + } + // set the magnetic field for track extrapolations + AliMUONTrackExtrap::SetField(); + // open run loader and load gAlice, kinematics and header AliRunLoader* runLoader = AliRunLoader::Open(filename); @@ -230,6 +244,9 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom esd->ReadFromTree(tree); runLoader->LoadHeader(); + Int_t runNumber = runLoader->GetHeader()->GetRun(); + AliCDBManager::Instance()->SetRun(runNumber); + nevents = runLoader->GetNumberOfEvents(); AliMUONTrackParam trackParam; @@ -321,6 +338,8 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom fZVertex = Vertex->GetZv(); fYVertex = Vertex->GetYv(); fXVertex = Vertex->GetXv(); + errXVtx = Vertex->GetXRes(); + errYVtx = Vertex->GetYRes(); } hPrimaryVertex->Fill(fZVertex); @@ -333,21 +352,24 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom } // set the magnetic field for track extrapolations - AliMUONTrackExtrap::SetField(AliTracker::GetFieldMap()); + AliMUONTrackExtrap::SetField(); // loop over all reconstructed tracks (also first track of combination) for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) { + // skip ghosts + if (!esd->GetMuonTrack(iTrack)->ContainTrackerData()) continue; + AliESDMuonTrack* muonTrack = new AliESDMuonTrack(*(esd->GetMuonTrack(iTrack))); // extrapolate to vertex if required and available if (ExtrapToVertex > 0 && Vertex->GetNContributors()) { - trackParam.GetParamFromUncorrected(*muonTrack); - AliMUONTrackExtrap::ExtrapToVertex(&trackParam, fXVertex, fYVertex, fZVertex); - trackParam.SetParamFor(*muonTrack); // put the new parameters in this copy of AliESDMuonTrack + AliMUONESDInterface::GetParamAtFirstCluster(*muonTrack, trackParam); + AliMUONTrackExtrap::ExtrapToVertex(&trackParam, fXVertex, fYVertex, fZVertex, errXVtx, errYVtx); + AliMUONESDInterface::SetParamAtVertex(trackParam, *muonTrack); // put the new parameters in this copy of AliESDMuonTrack } else if ((ExtrapToVertex > 0 && !Vertex->GetNContributors()) || ExtrapToVertex == 0){ - trackParam.GetParamFromUncorrected(*muonTrack); - AliMUONTrackExtrap::ExtrapToVertex(&trackParam, 0., 0., 0.); - trackParam.SetParamFor(*muonTrack); // put the new parameters in this copy of AliESDMuonTrack + AliMUONESDInterface::GetParamAtFirstCluster(*muonTrack, trackParam); + AliMUONTrackExtrap::ExtrapToVertex(&trackParam, 0., 0., 0., 0., 0.); + AliMUONESDInterface::SetParamAtVertex(trackParam, *muonTrack); // put the new parameters in this copy of AliESDMuonTrack } // Trigger @@ -400,17 +422,20 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom // loop over second track of combination for (Int_t iTrack2 = iTrack + 1; iTrack2 < nTracks; iTrack2++) { + // skip ghosts + if (!esd->GetMuonTrack(iTrack2)->ContainTrackerData()) continue; + AliESDMuonTrack* muonTrack2 = new AliESDMuonTrack(*(esd->GetMuonTrack(iTrack2))); // extrapolate to vertex if required and available if (ExtrapToVertex > 0 && Vertex->GetNContributors()) { - trackParam.GetParamFromUncorrected(*muonTrack2); - AliMUONTrackExtrap::ExtrapToVertex(&trackParam, fXVertex, fYVertex, fZVertex); - trackParam.SetParamFor(*muonTrack2); // put the new parameters in this copy of AliESDMuonTrack + AliMUONESDInterface::GetParamAtFirstCluster(*muonTrack2, trackParam); + AliMUONTrackExtrap::ExtrapToVertex(&trackParam, fXVertex, fYVertex, fZVertex, errXVtx, errYVtx); + AliMUONESDInterface::SetParamAtVertex(trackParam, *muonTrack2); // put the new parameters in this copy of AliESDMuonTrack } else if ((ExtrapToVertex > 0 && !Vertex->GetNContributors()) || ExtrapToVertex == 0){ - trackParam.GetParamFromUncorrected(*muonTrack2); - AliMUONTrackExtrap::ExtrapToVertex(&trackParam, 0., 0., 0.); - trackParam.SetParamFor(*muonTrack2); // put the new parameters in this copy of AliESDMuonTrack + AliMUONESDInterface::GetParamAtFirstCluster(*muonTrack2, trackParam); + AliMUONTrackExtrap::ExtrapToVertex(&trackParam, 0., 0., 0., 0., 0.); + AliMUONESDInterface::SetParamAtVertex(trackParam, *muonTrack2); // put the new parameters in this copy of AliESDMuonTrack } track2Trigger = muonTrack2->GetMatchTrigger(); @@ -461,9 +486,9 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom //trigger info if (ResType == 553) - ptTrig = 0x20;// mask for Hpt unlike sign pair + ptTrig = 0x08;// mask for Hpt unlike sign pair else if (ResType == 443) - ptTrig = 0x10;// mask for Lpt unlike sign pair + ptTrig = 0x04;// mask for Lpt unlike sign pair if (esd->GetTriggerMask() & ptTrig) NbTrigger++; @@ -575,7 +600,16 @@ Bool_t MUONefficiency( char* filename = "galice.root", char* geoFilename = "geom cout << "Chi2Cut for muon tracks = " << Chi2Cut << endl; cout << "PtCutMin for muon tracks = " << PtCutMin << endl; cout << "PtCutMax for muon tracks = " << PtCutMax << endl; + + hInvMassAll->Fit("gaus","q0"); + + TF1* f1 = hInvMassAll->GetFunction("gaus"); + + cout << "Entries (unlike sign dimuons) : " << hInvMassAll->GetEntries() + << Form(". Rough sigma = %7.2f MeV/c2",f1->GetParameter(2)*1000.0) << endl; + cout << "Entries (unlike sign dimuons) in the mass range ["<