49 #include "AliCDBEntry.h"
50 #include "AliCDBManager.h"
52 #include "AliDCSValue.h"
71 #include "AliSysInfo.h"
73 #include <Riostream.h>
77 #include <TObjArray.h>
81 #include "AliCounterCollection.h"
104 out << Form(
"RUN %09d NEVENTS %lld",run.
Number(),run.
Nevents());
116 const char* ocdbPath=
"local:///Users/laurent/Alice/OCDBcopy2013",
117 const char* weigthWithTrigger=
"CMSL7-B-NOPF-MUON")
127 TGrid::Connect(
"alien://");
130 AliCDBManager::Instance()->SetDefaultStorage(ocdbPath);
136 TString sruns = cc.GetKeyWords(
"run");
142 Double_t nEventsTotal(0.0);
144 while ( ( s = static_cast<TObjString*>(next())) )
146 Int_t runNumber = s->String().Atoi();
147 AliSysInfo::Instance()->AddStamp(Form(
"RUN%d",runNumber));
148 Long64_t nEvents = cc.GetSum(Form(
"trigger:%s/event:PSALL/run:%d",weigthWithTrigger,runNumber));
151 std::cout <<
"No events for run " << runNumber <<
" ??" << std::endl;
167 Double_t nEventsTotalDE =
static_cast<Double_t
>(nEventsTotal);
168 Float_t probaDE = 0.0;
169 if (nEventsTotalDE != 0.0)
170 probaDE = nBadEventsDE / nEventsTotalDE;
174 for (Int_t ii = 0; ii < nBusPatches; ii++)
179 Double_t nEventsTotalBP = nEventsTotalDE - nBadEventsDE;
180 Float_t probaBP = 0.0;
181 if (nEventsTotalBP != 0.0)
182 probaBP = nBadEventsBP / nEventsTotalBP;
186 for (Int_t jj = 0; jj < nManus; jj++)
190 Double_t nBadEventsManu = rejectedEvents.
ManuProbability(DEid, manuId);
191 Double_t nEventsTotalManu = nEventsTotalBP - nBadEventsBP;
192 Float_t probaManu = 0.0;
193 if (nEventsTotalManu != 0.0)
194 probaManu = nBadEventsManu / nEventsTotalManu;
199 Double_t nBadEventsChannel = rejectedEvents.
ChannelProbability(DEid, manuId, channel);
200 Double_t nEventsTotalChannel = nEventsTotalManu - nBadEventsManu;
201 Float_t probaChannel = 0.0;
202 if (nEventsTotalChannel != 0.0)
204 probaChannel = nBadEventsChannel / nEventsTotalChannel;
220 return weightedRejectList;
225 const char* rejectListPath=
"local://$HOME/OCDB",
226 const char* author=
"Matthieu Lenhardt")
234 TGrid::Connect(
"alien://");
236 ifstream in(runlistfile);
239 while ( in >> run >> nevents )
244 for ( std::vector<RunInfo>::size_type i = 0; i <
runs.size(); ++i )
246 cout <<
runs[i] << endl;
249 if (
runs.empty())
return false;
251 Int_t firstRun =
runs[0].Number();
252 Int_t lastRun =
runs[
runs.size()-1].Number();
254 const char* rawOCDB =
"raw://";
256 AliCDBManager* manager = AliCDBManager::Instance();
258 manager->SetCacheFlag(kFALSE);
260 manager->SetDefaultStorage(rawOCDB);
262 manager->SetSpecificStorage(
"MUON/Calib/RejectList", rejectListPath);
267 Long64_t nEventsTotal = 0;
269 for (std::vector<RunInfo>::size_type ii = 0; ii <
runs.size(); ++ii)
271 Int_t runNumber =
runs[ii].Number();
272 AliSysInfo::Instance()->AddStamp(Form(
"RUN%d",runNumber));
273 Long64_t nEvents =
runs[ii].Nevents();
285 Double_t nEventsTotalDE =
static_cast<Double_t
>(nEventsTotal);
286 Float_t probaDE = 0.0;
287 if (nEventsTotalDE != 0.0)
288 probaDE = nBadEventsDE / nEventsTotalDE;
292 for (Int_t ii = 0; ii < nBusPatches; ii++)
297 Double_t nEventsTotalBP = nEventsTotalDE - nBadEventsDE;
298 Float_t probaBP = 0.0;
299 if (nEventsTotalBP != 0.0)
300 probaBP = nBadEventsBP / nEventsTotalBP;
304 for (Int_t jj = 0; jj < nManus; jj++)
308 Double_t nBadEventsManu = rejectedEvents.
ManuProbability(DEid, manuId);
309 Double_t nEventsTotalManu = nEventsTotalBP - nBadEventsBP;
310 Float_t probaManu = 0.0;
311 if (nEventsTotalManu != 0.0)
312 probaManu = nBadEventsManu / nEventsTotalManu;
317 Double_t nBadEventsChannel = rejectedEvents.
ChannelProbability(DEid, manuId, channel);
318 Double_t nEventsTotalChannel = nEventsTotalManu - nBadEventsManu;
319 Float_t probaChannel = 0.0;
320 if (nEventsTotalChannel != 0.0)
322 probaChannel = nBadEventsChannel / nEventsTotalChannel;
334 "Weighted reject List for MCH, for simulations only",
351 for (Int_t ii = 0; ii < nBusPatches; ii++)
356 for (Int_t jj = 0; jj < nManus; jj++)
361 for (Int_t channel = 0; channel < nChannels; channel++)
363 Int_t padStatus = status.
PadStatus(DEid, manuId, channel);
364 if ((rejectMask == 0 && padStatus != 0) || (padStatus & rejectMask) != 0)
383 AliCDBManager::Instance()->SetRun(runNumber);
387 Double_t maxBadChannels = 80.0;
409 Double_t ratioBadChannelsDE = 0.0;
410 if (nChannelsDE != 0.0)
411 ratioBadChannelsDE = 100.0 * nBadChannelsDE / nChannelsDE;
414 Bool_t goodDE = kTRUE;
415 if (ratioBadChannelsDE >= maxBadChannels)
423 for (Int_t ii = 0; ii < nBusPatches; ii++)
430 Double_t ratioBadChannelsBP = 100.0 * nBadChannelsBP / nChannelsBP;
432 Bool_t goodBP = kTRUE;
435 if (ratioBadChannelsBP >= maxBadChannels)
437 Double_t newRejectedEventsBP = rejectedEvents.
BusPatchProbability(BPid) +
static_cast<Double_t
>(nEvents);
443 for (Int_t jj = 0; jj < nManus; jj++)
448 Double_t nBadChannelsManu = nBadChannels->
ManuProbability(DEid, manuId);
449 Double_t ratioBadChannelsManu = 100.0 * nBadChannelsManu / nChannelsManu;
451 Bool_t goodManu = kTRUE;
453 if (ratioBadChannelsManu >= maxBadChannels)
455 Double_t newRejectedEventsManu = rejectedEvents.
ManuProbability(DEid, manuId) +
static_cast<Double_t
>(nEvents);
464 for (Int_t channel = 0; channel < nChannels; channel++)
467 Double_t newRejectedEventsChannel = rejectedEvents.
ChannelProbability(DEid, manuId, channel) +
static_cast<Double_t
>(nEvents);
509 #include "AliDetectorTagCuts.h"
510 #include "AliEventTagCuts.h"
511 #include "AliLHCTagCuts.h"
512 #include "AliRunTagCuts.h"
513 #include "AliTagAnalysis.h"
514 #include "TGridResult.h"
517 bool CreateXMLCollectionFromRunList(
const char* collectionName,
528 if (!gGrid) TGrid::Connect(
"alien://");
537 if ( stype !=
"ESD" && stype !=
"AOD" )
539 cout <<
"Only ESD or AOD type supported" << endl;
543 ifstream in(gSystem->ExpandPathName(runlist));
547 AliTagAnalysis tagAnalysis(
"ESD");
549 while ( in >> runNumber )
551 TGridResult *res = gGrid->Query(
"/alice/data",
552 Form(
"%09d/%ss/pass%d/*%d*/Run%d.Event*.ESD.tag.root",
553 runNumber,stype.Data(),passNumber,runNumber,runNumber));
554 Int_t nFiles = res->GetEntries();
560 for (Int_t i = 0; i < nFiles; ++i)
562 TString filename = res->GetKey(i,
"turl");
563 if(filename ==
"")
continue;
564 tagAnalysis.AddTagsFile(filename.Data(),kFALSE);
570 cout << ntagfiles <<
" tag files added" << endl;
572 AliRunTagCuts runCuts;
573 AliEventTagCuts eventCuts;
574 AliLHCTagCuts lhcCuts;
575 AliDetectorTagCuts detCuts;
577 eventCuts.SetNMuonRange(1,99999);
579 return tagAnalysis.CreateXMLCollection(collectionName,&runCuts,&lhcCuts,&detCuts,&eventCuts);
584 TChain* CreateChainFromXMLCollection(
const char* collectionName,
const char* type)
588 if (!gGrid) TGrid::Connect(
"alien://");
597 if ( stype !=
"ESD" && stype !=
"AOD" )
599 cout <<
"Only ESD or AOD type supported" << endl;
603 AliTagAnalysis tagAnalysis(stype.Data());
605 return tagAnalysis.CreateChainFromCollection(collectionName,stype==
"ESD" ?
"esdTree":
"aodTree");
Int_t GetNofManus() const
Implementation of AliMUONVTrackerData.
The iterator over detection elements.
Float_t ManuProbability(Int_t detElemId, Int_t manuId) const
RunInfo(Int_t run, Long64_t nevents)
AliMUONRejectList * CreateWeightedRejectList(AliCounterCollection &cc, const char *ocdbPath="local:///Users/laurent/Alice/OCDBcopy2013", const char *weigthWithTrigger="CMSL7-B-NOPF-MUON")
Producer of some AliMUONVTrackerData.
Int_t AddEventsSingleRun(Int_t run_number, Long64_t nEvents, AliMUONRejectList &rejectedEvents)
AliMpDetElement * CurrentDE() const
Int_t CurrentDEId() const
Class with MUON reconstruction parameters.
AliMpDetElement * GetDetElement(Int_t detElemId, Bool_t warn=true) const
Int_t GetManuId(Int_t index) const
Float_t DetectionElementProbability(Int_t detElemId) const
void Register(AliMUONVTrackerDataMaker *reader)
void SetDetectionElementProbability(Int_t detElemId, Float_t proba=1.0)
static AliMUONPainterDataRegistry * Instance()
static AliMpDDLStore * Instance(Bool_t warn=true)
static Int_t ManuNofChannels()
Max number of channels per manu.
AliMUONVCalibParam * PadStatus(Int_t detElemId, Int_t manuId) const
std::vector< RunInfo > runs
Float_t ChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel) const
AliMUONRejectList * CheckDE_BP_ManuPedestals(Int_t rejectMask, AliMUONPadStatusMaker &status)
void SetManuProbability(Int_t detElemId, Int_t manuId, Float_t proba=1.0)
AliMpBusPatch * GetBusPatch(Int_t busPatchId, Bool_t warn=true) const
Int_t NofChannelsInManu(Int_t manuId) const
Simple wrapper of AliMUONVTrackerData (for backward compatibility)
Int_t GetNofBusPatches() const
Single entry point to access MUON calibration data.
void SetChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel, Float_t proba=1.0)
Int_t GetBusPatchId(Int_t index) const
Object to hold the list of elements we want to reject from the reconstruction.
void SetNevents(Long64_t n)
Float_t BusPatchProbability(Int_t busPatchId) const
UInt_t PadGoodnessMask() const
Get the goodness mask.
Int_t NofChannels() const
Return the number of channels in this detection element.
std::ostream & operator<<(std::ostream &out, const RunInfo &run)
static Bool_t LoadAll(Bool_t warn=false)
void SetBusPatchProbability(Int_t busPatchId, Float_t proba=1.0)
Make a 2DStore of pad statuses, using different sources of information.
void WriteToCDB(const char *calibpath, TObject *object, Int_t startRun, Int_t endRun, Bool_t defaultValues)
AliMUONRecoParam * LoadRecoParam()
void SetLimits(const AliMUONRecoParam &recoParams)