]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MFT/AliMuonForwardTrackAnalysis.C
Generation of dictionaries and rootmaps with Root6
[u/mrichter/AliRoot.git] / MFT / AliMuonForwardTrackAnalysis.C
1 // #include "AliMuonForwardTrackAnalysis.h"
2 // #include "TDatabasePDG.h"
3 // #include "TGeoGlobalMagField.h"
4 // #include "TROOT.h"
5 // #include "AliMagF.h"
6
7 enum {kNoOption, kResonanceOnly, kCharmOnly, kBeautyOnly, kBackground1mu, kBackground2mu, kNoResonances};
8
9 //=============================================================================================================================================================
10
11 void AliMuonForwardTrackAnalysis(const Char_t *readDir= ".",                       // the directory with the MuonGlobalTracks.root and geometry.root files
12                                  Int_t option = kNoOption,                         // for resonance analysis: kResonanceOnly 
13                                  Double_t massMin = 0.,                            // lower limit for the cut on dimuon mass
14                                  Double_t massMax = 10.,                           // upper limit for the cut on dimuon mass
15                                  Double_t maxChi2SingleMuons = 1.5,                // upper limit for the cut on the single muon chi2
16                                  Double_t maxOffsetSingleMuons = 1.e9.,            // upper limit for the cut on the single muon offset w.r.t. the primary vtx
17                                  Bool_t correlateCutOnOffsetChi2 = kTRUE,          // if true, the cut region in the chi2-offset plane for single muons is a quadrant aorund the origin
18                                  Double_t maxWOffsetMuonPairsAtPrimaryVtx = 1.e9,  // upper limit for the cut on weighted offset of dimuond w.r.t. the primary vtx
19                                  Double_t maxWOffsetMuonPairsAtPCA = 1.e9,         // upper limit for the cut on weighted offset of dimuond w.r.t. their PCA
20                                  Double_t maxDistancePrimaryVtxPCA = 1.e9,         // upper limit for the cut on the distance between primary vtx and PCA
21                                  Double_t minPCAQuality = 0.,                      // lower limit for the cut on the PCA quality
22                                  Int_t triggerLevel = 1,                           // level of the trigger both muons must satisfy
23                                  Int_t maxNWrongClusters = 999,                    // maximum number of wrong MFT clusters for a global muon track
24                                  const Char_t *outDir = ".",                       // directory where the output file will be created
25                                  Bool_t singleMuonAnalysis = kTRUE,                // if true, the aalysis of single muons will be performed
26                                  Bool_t muonPairAnalysis = kTRUE,                  // if true, the aalysis of muon pairs will be performed
27                                  Int_t firstEvent = -1,
28                                  Int_t lastEvent = -1, 
29                                  Int_t numTag = 0,                                 // number which will tag the name of the output file
30                                  Double_t ptMinSingleMuons = 0.0,                  // lower limit for the cut on the single muon pt
31                                  Double_t trueMass = 3.097,                        // used to evaluate the pseudo proper decay length, usually for J/psi only
32                                  Bool_t evalDimuonVtxResolution=kFALSE,            // to be set true only if prompt dimuon sources are analyzed
33                                  Int_t nEventsToMix = 0,                           // if <1 or >100, mixing is not performed
34                                  const Char_t *tag = "noTag",                      // tag added to the output file name
35                                  Double_t etaMinSingleMuons = -3.6,                // lower limit for the cut on the single muon eta
36                                  Double_t etaMaxSingleMuons = -2.5) {              // upper limit for the cut on the single muon eta
37   
38   const Double_t mJpsi = TDatabasePDG::Instance()->GetParticle("J/psi")->Mass();
39
40   if (trueMass<0) trueMass = mJpsi;
41  
42   gROOT -> LoadMacro("./AliMuonForwardTrackAnalysis.cxx+");
43   //  AliLog::SetClassDebugLevel("AliMuonForwardTrackPair", 1);
44   //  AliLog::SetClassDebugLevel("AliMuonForwardTrackAnalysis", 2);
45
46   TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., AliMagF::k5kG));
47   
48   AliMuonForwardTrackAnalysis *myAnalysis = new AliMuonForwardTrackAnalysis();
49   myAnalysis->ReadEvents(firstEvent, lastEvent);
50   myAnalysis->SetInputDir(readDir);
51   myAnalysis->SetOutputDir(outDir);
52   myAnalysis->SetMassRange(massMin, massMax);
53   myAnalysis->SetTrueMass(trueMass);
54   myAnalysis->SetSingleMuonAnalysis(singleMuonAnalysis);
55   myAnalysis->SetMuonPairAnalysis(muonPairAnalysis);
56   myAnalysis->SetOption(option);
57
58   myAnalysis->SetMaxNWrongClustersMC(maxNWrongClusters);
59   myAnalysis->SetMinPtSingleMuons(ptMinSingleMuons);
60   //  myAnalysis->SetEtaRangeSingleMuons(etaMinSingleMuons, etaMaxSingleMuons);
61   myAnalysis->SetMaxChi2SingleMuons(maxChi2SingleMuons);
62   myAnalysis->SetMaxOffsetSingleMuons(maxOffsetSingleMuons);
63   myAnalysis->CorrelateCutOnOffsetChi2(correlateCutOnOffsetChi2);
64
65   myAnalysis->SetMaxWOffsetMuonPairsAtPrimaryVtx(maxWOffsetMuonPairsAtPrimaryVtx);
66   myAnalysis->SetMaxWOffsetMuonPairsAtPCA(maxWOffsetMuonPairsAtPCA);
67   myAnalysis->SetMaxDistancePrimaryVtxPCA(maxDistancePrimaryVtxPCA);
68   myAnalysis->SetMinPCAQuality(minPCAQuality);
69
70   myAnalysis->SetMatchTrigger(triggerLevel);
71
72   myAnalysis->EvalDimuonVtxResolution(evalDimuonVtxResolution);    // it should be true only with prompt dimuon sources
73
74   myAnalysis->SetNEventsToMix(nEventsToMix);
75
76   if (myAnalysis->Init("MuonGlobalTracks.root")) {
77     while (myAnalysis->LoadNextEvent()) continue;
78     myAnalysis->Terminate(Form("outFiles/outFile.%d.%s.root", numTag, tag));
79   }
80
81 }
82
83 //================================================================================================================================
84