07c6fc99bc637ba599197b1bec0e9c00619c22db
[u/mrichter/AliRoot.git] / MUON / MUONStatusMap.C
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 /// Macro to check/test pad status and pad status map makers
19 // Laurent Aphecetche
20
21 #if !defined(__CINT__) || defined(__MAKECINT__)
22 #include "AliCDBManager.h"
23 #include "AliMUONCalibrationData.h"
24 #include "AliMUONObjectPair.h"
25 #include "AliMUONPadStatusMaker.h"
26 #include "AliMUONPadStatusMapMaker.h"
27 #include "AliMUONV2DStore.h"
28 #include "AliMUONVCalibParam.h"
29 #include "AliMUONVDataIterator.h"
30 #include "AliMpIntPair.h"
31 #include "Riostream.h"
32 #endif
33
34 void findBad(const AliMUONV2DStore& status)
35 {
36   AliMUONVDataIterator* it = status.Iterator();
37   AliMUONObjectPair* pair;
38   
39   while ( ( pair = static_cast<AliMUONObjectPair*>(it->Next()) ) )
40   {
41     AliMpIntPair* p = static_cast<AliMpIntPair*>(pair->First());
42     Int_t detElemId = p->GetFirst();
43     Int_t manuId = p->GetSecond();
44     AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(pair->Second());
45     Bool_t bad(kFALSE);
46     for ( Int_t i = 0; i < param->Size(); ++i ) 
47     {
48       if ( param->ValueAsInt(0) ) bad = kTRUE;
49     }
50     if (bad)
51     {
52       cout << Form("DE %4d ManuId %4d",detElemId,manuId) << endl;
53     }
54   }
55 }
56
57 AliMUONV2DStore* MUONStatusMap(Int_t runNumber=0, Bool_t statusOnly=kFALSE, Int_t mask=0)
58 {
59   AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB");
60   
61   AliMUONCalibrationData cd(runNumber);
62   
63   AliMUONPadStatusMaker statusMaker(cd);
64   
65 //  statusMaker.SetPedMeanLimits(50,200);
66   statusMaker.SetPedSigmaLimits(0.5,2);
67   
68   AliMUONV2DStore* status = statusMaker.MakeStatus();
69  
70   if ( status )
71   {
72     findBad(*status);
73   }
74   else
75   {
76     cout << "ERROR. Could not get status from CDB" << endl;
77     return 0;
78   }
79   
80   if ( statusOnly ) return status;
81   
82   AliMUONPadStatusMapMaker statusMapMaker;
83   
84   return statusMapMaker.MakePadStatusMap(*status,mask);
85 }