/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* *
* Author: The ALICE Off-line Project. *
* Contributors are mentioned in the code where appropriate. *
* *
* Permission to use, copy, modify and distribute this software and its *
* documentation strictly for non-commercial purposes is hereby granted *
* without fee, provided that the above copyright notice appears in all *
* copies and that both the copyright notice and this permission notice *
* appear in the supporting documentation. The authors make no claims *
* about the suitability of this software for any purpose. It is *
* provided "as is" without express or implied warranty. *
**************************************************************************/
// $Id$
/// \ingroup macros
/// \file MUONTriggerEfficiency.C
/// \brief Macro for checking trigger integrated efficiency for dimuons.
///
/// The efficiency is calculated with respect to the 3/4 coincidence.
///
/// \author Fabien Guerin, LPC Clermont-Ferrand, Jan. 2006
#if !defined(__CINT__) || defined(__MAKECINT__)
// ROOT includes
#include "TBranch.h"
#include "TClonesArray.h"
#include "TObject.h"
#include "TFile.h"
#include "TH1.h"
#include "TH2.h"
#include "TTree.h"
#include "TParticle.h"
// STEER includes
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliHeader.h"
#include "AliLoader.h"
#include "AliStack.h"
#include "AliCDBManager.h"
// MUON includes
#include "AliMUON.h"
#include "AliMUONHit.h"
#include "AliMUONConstants.h"
#include "AliMUONDigit.h"
#include "AliMUONGlobalTrigger.h"
#include "AliMUONTrack.h"
#include "AliMUONDataInterface.h"
#include "AliMUONMCDataInterface.h"
#include "AliMUONVHitStore.h"
#include "AliMUONVTriggerStore.h"
#endif
// Upsilon(1S)
void MUONTriggerEfficiency(const char* filenameSim="galice_sim.root",
const char* filenameRec="galice.root",
Bool_t readFromRP = 0)
{
// Set default CDB storage
AliCDBManager* man = AliCDBManager::Instance();
man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
man->SetRun(0);
// output file
AliMUONMCDataInterface diSim(filenameSim);
AliMUONDataInterface diRec(filenameRec);
if (!diSim.IsValid())
{
cerr << "Cannot access " << filenameSim << endl;
return;
}
if (!diRec.IsValid())
{
cerr << "Cannot access " << filenameRec << endl;
return;
}
FILE* fdat = fopen("MUONTriggerEfficiency.out","w");
if (!fdat)
{
cerr << "Cannot create output file" << endl;
return;
}
Int_t coincmuon,muonlpt,muonhpt;
Int_t CoincMuPlus,CoincMuMinus;
coincmuon=0;
muonlpt=0;
muonhpt=0;
Int_t nevents = diSim.NumberOfEvents();
for (Int_t ievent=0; ievent<nevents; ++ievent)
{
CoincMuPlus=0;
CoincMuMinus=0;
if (ievent%1000==0) printf("\t Event = %d\n",ievent);
// Hits
Int_t NbHits[2][4];
for (Int_t j=0; j<2; j++)
{
for (Int_t jj=0; jj<4; jj++)
{
NbHits[j][jj]=0;
}
}
Int_t ntracks = (Int_t) diSim.NumberOfTracks(ievent);
for ( Int_t itrack=0; itrack<ntracks; ++itrack )
{
AliMUONVHitStore* hitStore = diSim.HitStore(ievent,itrack);
AliMUONHit* mHit;
TIter next(hitStore->CreateIterator());
while ( ( mHit = static_cast<AliMUONHit*>(next()) ) )
{
Int_t Nch = mHit->Chamber();
Int_t hittrack = mHit->Track();
Float_t IdPart = mHit->Particle();
for (Int_t j=0;j<4;j++)
{
Int_t kch=11+j;
if (hittrack==1 || hittrack==2)
{
if (Nch==kch && IdPart==-13 && NbHits[0][j]==0) NbHits[0][j]++;
if (Nch==kch && IdPart==13 && NbHits[1][j]==0) NbHits[1][j]++;
}
}
}
} // end track loop
// 3/4 coincidence
Int_t SumNbHits=NbHits[0][0]+NbHits[0][1]+NbHits[0][2]+NbHits[0][3];
if (SumNbHits==3 || SumNbHits==4) CoincMuPlus=1;
SumNbHits=NbHits[1][0]+NbHits[1][1]+NbHits[1][2]+NbHits[1][3];
if (SumNbHits==3 || SumNbHits==4) CoincMuMinus=1;
if (CoincMuPlus==1 && CoincMuMinus==1) coincmuon++;
TString tree("D");
if ( readFromRP ) tree = "R";
AliMUONVTriggerStore* triggerStore = diRec.TriggerStore(ievent,tree.Data());
AliMUONGlobalTrigger* gloTrg = triggerStore->Global();
if (gloTrg->PairUnlikeLpt()>=1) muonlpt++;
if (gloTrg->PairUnlikeHpt()>=1) muonhpt++;
} // end loop on event
// calculate efficiency with as a ref. at least 3/4 planes fired
Float_t efficiencylpt,efficiencyhpt;
Double_t coincmu,lptmu,hptmu;
Float_t error;
coincmu=Double_t(coincmuon);
lptmu=Double_t(muonlpt);
hptmu=Double_t(muonhpt);
// output
fprintf(fdat,"\n");
fprintf(fdat," Number of events = %d \n",nevents);
fprintf(fdat," Number of events with 3/4 coinc = %d \n",coincmuon);
fprintf(fdat," Nomber of dimuons with 3/4 coinc Lpt cut = %d \n",muonlpt);
fprintf(fdat," Number of dimuons with 3/4 coinc Hpt cut = %d \n",muonhpt);
fprintf(fdat,"\n");
efficiencylpt=lptmu/coincmu;
error=efficiencylpt*TMath::Sqrt((lptmu+coincmu)/(lptmu*coincmu));
fprintf(fdat," Efficiency Lpt cut = %4.4f +/- %4.4f\n",efficiencylpt,error);
efficiencyhpt=hptmu/coincmu;
error=efficiencyhpt*TMath::Sqrt((hptmu+coincmu)/(hptmu*coincmu));
fprintf(fdat," Efficiency Hpt cut = %4.4f +/- %4.4f\n",efficiencyhpt,error);
fclose(fdat);
}
MUONTriggerEfficiency.C:1 MUONTriggerEfficiency.C:2 MUONTriggerEfficiency.C:3 MUONTriggerEfficiency.C:4 MUONTriggerEfficiency.C:5 MUONTriggerEfficiency.C:6 MUONTriggerEfficiency.C:7 MUONTriggerEfficiency.C:8 MUONTriggerEfficiency.C:9 MUONTriggerEfficiency.C:10 MUONTriggerEfficiency.C:11 MUONTriggerEfficiency.C:12 MUONTriggerEfficiency.C:13 MUONTriggerEfficiency.C:14 MUONTriggerEfficiency.C:15 MUONTriggerEfficiency.C:16 MUONTriggerEfficiency.C:17 MUONTriggerEfficiency.C:18 MUONTriggerEfficiency.C:19 MUONTriggerEfficiency.C:20 MUONTriggerEfficiency.C:21 MUONTriggerEfficiency.C:22 MUONTriggerEfficiency.C:23 MUONTriggerEfficiency.C:24 MUONTriggerEfficiency.C:25 MUONTriggerEfficiency.C:26 MUONTriggerEfficiency.C:27 MUONTriggerEfficiency.C:28 MUONTriggerEfficiency.C:29 MUONTriggerEfficiency.C:30 MUONTriggerEfficiency.C:31 MUONTriggerEfficiency.C:32 MUONTriggerEfficiency.C:33 MUONTriggerEfficiency.C:34 MUONTriggerEfficiency.C:35 MUONTriggerEfficiency.C:36 MUONTriggerEfficiency.C:37 MUONTriggerEfficiency.C:38 MUONTriggerEfficiency.C:39 MUONTriggerEfficiency.C:40 MUONTriggerEfficiency.C:41 MUONTriggerEfficiency.C:42 MUONTriggerEfficiency.C:43 MUONTriggerEfficiency.C:44 MUONTriggerEfficiency.C:45 MUONTriggerEfficiency.C:46 MUONTriggerEfficiency.C:47 MUONTriggerEfficiency.C:48 MUONTriggerEfficiency.C:49 MUONTriggerEfficiency.C:50 MUONTriggerEfficiency.C:51 MUONTriggerEfficiency.C:52 MUONTriggerEfficiency.C:53 MUONTriggerEfficiency.C:54 MUONTriggerEfficiency.C:55 MUONTriggerEfficiency.C:56 MUONTriggerEfficiency.C:57 MUONTriggerEfficiency.C:58 MUONTriggerEfficiency.C:59 MUONTriggerEfficiency.C:60 MUONTriggerEfficiency.C:61 MUONTriggerEfficiency.C:62 MUONTriggerEfficiency.C:63 MUONTriggerEfficiency.C:64 MUONTriggerEfficiency.C:65 MUONTriggerEfficiency.C:66 MUONTriggerEfficiency.C:67 MUONTriggerEfficiency.C:68 MUONTriggerEfficiency.C:69 MUONTriggerEfficiency.C:70 MUONTriggerEfficiency.C:71 MUONTriggerEfficiency.C:72 MUONTriggerEfficiency.C:73 MUONTriggerEfficiency.C:74 MUONTriggerEfficiency.C:75 MUONTriggerEfficiency.C:76 MUONTriggerEfficiency.C:77 MUONTriggerEfficiency.C:78 MUONTriggerEfficiency.C:79 MUONTriggerEfficiency.C:80 MUONTriggerEfficiency.C:81 MUONTriggerEfficiency.C:82 MUONTriggerEfficiency.C:83 MUONTriggerEfficiency.C:84 MUONTriggerEfficiency.C:85 MUONTriggerEfficiency.C:86 MUONTriggerEfficiency.C:87 MUONTriggerEfficiency.C:88 MUONTriggerEfficiency.C:89 MUONTriggerEfficiency.C:90 MUONTriggerEfficiency.C:91 MUONTriggerEfficiency.C:92 MUONTriggerEfficiency.C:93 MUONTriggerEfficiency.C:94 MUONTriggerEfficiency.C:95 MUONTriggerEfficiency.C:96 MUONTriggerEfficiency.C:97 MUONTriggerEfficiency.C:98 MUONTriggerEfficiency.C:99 MUONTriggerEfficiency.C:100 MUONTriggerEfficiency.C:101 MUONTriggerEfficiency.C:102 MUONTriggerEfficiency.C:103 MUONTriggerEfficiency.C:104 MUONTriggerEfficiency.C:105 MUONTriggerEfficiency.C:106 MUONTriggerEfficiency.C:107 MUONTriggerEfficiency.C:108 MUONTriggerEfficiency.C:109 MUONTriggerEfficiency.C:110 MUONTriggerEfficiency.C:111 MUONTriggerEfficiency.C:112 MUONTriggerEfficiency.C:113 MUONTriggerEfficiency.C:114 MUONTriggerEfficiency.C:115 MUONTriggerEfficiency.C:116 MUONTriggerEfficiency.C:117 MUONTriggerEfficiency.C:118 MUONTriggerEfficiency.C:119 MUONTriggerEfficiency.C:120 MUONTriggerEfficiency.C:121 MUONTriggerEfficiency.C:122 MUONTriggerEfficiency.C:123 MUONTriggerEfficiency.C:124 MUONTriggerEfficiency.C:125 MUONTriggerEfficiency.C:126 MUONTriggerEfficiency.C:127 MUONTriggerEfficiency.C:128 MUONTriggerEfficiency.C:129 MUONTriggerEfficiency.C:130 MUONTriggerEfficiency.C:131 MUONTriggerEfficiency.C:132 MUONTriggerEfficiency.C:133 MUONTriggerEfficiency.C:134 MUONTriggerEfficiency.C:135 MUONTriggerEfficiency.C:136 MUONTriggerEfficiency.C:137 MUONTriggerEfficiency.C:138 MUONTriggerEfficiency.C:139 MUONTriggerEfficiency.C:140 MUONTriggerEfficiency.C:141 MUONTriggerEfficiency.C:142 MUONTriggerEfficiency.C:143 MUONTriggerEfficiency.C:144 MUONTriggerEfficiency.C:145 MUONTriggerEfficiency.C:146 MUONTriggerEfficiency.C:147 MUONTriggerEfficiency.C:148 MUONTriggerEfficiency.C:149 MUONTriggerEfficiency.C:150 MUONTriggerEfficiency.C:151 MUONTriggerEfficiency.C:152 MUONTriggerEfficiency.C:153 MUONTriggerEfficiency.C:154 MUONTriggerEfficiency.C:155 MUONTriggerEfficiency.C:156 MUONTriggerEfficiency.C:157 MUONTriggerEfficiency.C:158 MUONTriggerEfficiency.C:159 MUONTriggerEfficiency.C:160 MUONTriggerEfficiency.C:161 MUONTriggerEfficiency.C:162 MUONTriggerEfficiency.C:163 MUONTriggerEfficiency.C:164 MUONTriggerEfficiency.C:165 MUONTriggerEfficiency.C:166 MUONTriggerEfficiency.C:167 MUONTriggerEfficiency.C:168 MUONTriggerEfficiency.C:169 MUONTriggerEfficiency.C:170 MUONTriggerEfficiency.C:171 MUONTriggerEfficiency.C:172 MUONTriggerEfficiency.C:173 MUONTriggerEfficiency.C:174 MUONTriggerEfficiency.C:175 MUONTriggerEfficiency.C:176 MUONTriggerEfficiency.C:177 MUONTriggerEfficiency.C:178 MUONTriggerEfficiency.C:179 MUONTriggerEfficiency.C:180 MUONTriggerEfficiency.C:181 MUONTriggerEfficiency.C:182 MUONTriggerEfficiency.C:183 MUONTriggerEfficiency.C:184 MUONTriggerEfficiency.C:185 MUONTriggerEfficiency.C:186 MUONTriggerEfficiency.C:187 MUONTriggerEfficiency.C:188 MUONTriggerEfficiency.C:189 MUONTriggerEfficiency.C:190 MUONTriggerEfficiency.C:191 MUONTriggerEfficiency.C:192 MUONTriggerEfficiency.C:193 MUONTriggerEfficiency.C:194 MUONTriggerEfficiency.C:195 MUONTriggerEfficiency.C:196 MUONTriggerEfficiency.C:197 MUONTriggerEfficiency.C:198 MUONTriggerEfficiency.C:199 MUONTriggerEfficiency.C:200 MUONTriggerEfficiency.C:201 MUONTriggerEfficiency.C:202