#include "AliMUONQAMappingCheck.h"
#include "AliCDBManager.h"
#include "AliCodeTimer.h"
#include "AliLog.h"
#include "AliMUON2DMap.h"
#include "AliMUONDigitCalibrator.h"
#include "AliMUONCalibParamND.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONPadStatusMapMaker.h"
#include "AliMUONTrackerData.h"
#include "AliMUONVCluster.h"
#include "AliMUONVDigit.h"
#include "AliMpConstants.h"
#include "AliMpDetElement.h"
#include "AliMpDDLStore.h"
#include "AliMpPad.h"
#include "AliMpSegmentation.h"
#include "AliMpVSegmentation.h"
#include "AliMpManuIterator.h"
ClassImp(AliMUONQAMappingCheck)
AliMUONQAMappingCheck::AliMUONQAMappingCheck(Int_t runNumber)
: TObject(),
fStore(new AliMUON2DMap(kTRUE)),
fGeometryTransformer(new AliMUONGeometryTransformer),
fDigitCalibrator(new AliMUONDigitCalibrator(runNumber)),
fNumberOfEvents(0),
fNumberOfClusters(0),
fNumberOfMonoCathodeClusters(0),
fNumberOfLegitimateMonoCathodeClusters(0)
{
AliCodeTimerAuto(Form("RUN %d",runNumber),0);
fGeometryTransformer->LoadGeometryData();
AliMpManuIterator it;
Int_t detElemId, manuId;
while (it.Next(detElemId,manuId))
{
fStore->Add(new AliMUONCalibParamND(4,AliMpConstants::ManuNofChannels(),detElemId,manuId,0.0));
}
}
AliMUONQAMappingCheck::~AliMUONQAMappingCheck()
{
AliInfo(Form("Nevents %d Nclusters %d Nmono-cathodes %d Nlegitimate-mono-cathodes %d",
fNumberOfEvents,
fNumberOfClusters,
fNumberOfMonoCathodeClusters,
fNumberOfLegitimateMonoCathodeClusters));
delete fStore;
delete fGeometryTransformer;
delete fDigitCalibrator;
}
void AliMUONQAMappingCheck::AddClusterLocation(Int_t detElemId,
Int_t manuId, Int_t manuChannel,
Bool_t monoCathode,
Bool_t legitimateMonoCathode)
{
if ( manuId > 0 )
{
AliMUONVCalibParam* p = static_cast<AliMUONVCalibParam*>(fStore->FindObject(detElemId,manuId));
if (!p)
{
p = new AliMUONCalibParamND(4,AliMpConstants::ManuNofChannels(),detElemId,manuId,0.0);
fStore->Add(p);
}
p->SetValueAsDouble(manuChannel,0,p->ValueAsDouble(manuChannel,0)+1.0);
if ( monoCathode )
{
p->SetValueAsDouble(manuChannel,1,p->ValueAsDouble(manuChannel,1)+1.0);
if (!legitimateMonoCathode)
{
p->SetValueAsDouble(manuChannel,2,p->ValueAsDouble(manuChannel,2)+1.0);
}
}
}
}
void
AliMUONQAMappingCheck::NewEvent()
{
++fNumberOfEvents;
}
AliMUONVTrackerData*
AliMUONQAMappingCheck::CreateData(const char* name) const
{
AliMUONVStore* store = static_cast<AliMUONVStore*>(fStore->Clone());
TIter next(store->CreateIterator());
AliMUONVCalibParam* param;
while ( ( param = static_cast<AliMUONVCalibParam*>(next()) ) )
{
for ( Int_t i = 0; i < param->Size(); ++i )
{
param->SetValueAsDouble(i,3,fNumberOfEvents);
}
}
AliMUONTrackerData* data = new AliMUONTrackerData(name,name,4,kTRUE);
data->SetDimensionName(0,"all");
data->SetDimensionName(1,"mono");
data->SetDimensionName(2,"suspect");
data->SetDimensionName(3,"Nevents");
data->DisableChannelLevel();
data->Add(*store);
delete store;
return data;
}
void
AliMUONQAMappingCheck::GetClusterLocation(AliMUONVCluster& cluster,
Int_t& manuBending, Int_t& manuBendingChannel,
Int_t& manuNonBending, Int_t& manuNonBendingChannel,
Bool_t& monoCathode, Bool_t& legitimateMonoCathode)
{
Int_t detElemId = cluster.GetDetElemId();
Double_t x,y,z;
fGeometryTransformer->Global2Local(detElemId,cluster.GetX(),cluster.GetY(),cluster.GetZ(),x,y,z);
AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
const AliMpVSegmentation* segB = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,de->GetCathodType(AliMp::kBendingPlane));
const AliMpVSegmentation* segNB = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,de->GetCathodType(AliMp::kNonBendingPlane));
AliMpPad padB = segB->PadByPosition(x,y);
AliMpPad padNB = segNB->PadByPosition(x,y);
manuBending = padB.GetManuId();
manuBendingChannel = padB.GetManuChannel();
manuNonBending = padNB.GetManuId();
manuNonBendingChannel = padNB.GetManuChannel();
Bool_t bending(kFALSE);
Bool_t nonBending(kFALSE);
for ( Int_t i = 0; i < cluster.GetNDigits(); ++i )
{
UInt_t digitId = cluster.GetDigitId(i);
Int_t manuId = AliMUONVDigit::ManuId(digitId);
if ( manuId > 0 )
{
if ( manuId & AliMpConstants::ManuMask(AliMp::kNonBendingPlane) )
{
nonBending = kTRUE;
}
else
{
bending = kTRUE;
}
}
}
monoCathode = ( bending != nonBending );
if ( monoCathode )
{
legitimateMonoCathode = kFALSE;
if (!bending)
{
if ( IsManuDead(detElemId,manuBending) ) legitimateMonoCathode = kTRUE;
}
if (!nonBending)
{
if ( IsManuDead(detElemId,manuNonBending) ) legitimateMonoCathode = kTRUE;
}
}
if (!bending) manuBending *= -1;
if (!nonBending) manuNonBending *= -1;
++fNumberOfClusters;
if ( monoCathode )
{
++fNumberOfMonoCathodeClusters;
if ( legitimateMonoCathode ) ++fNumberOfLegitimateMonoCathodeClusters;
}
}
Bool_t AliMUONQAMappingCheck::IsManuDead(Int_t detElemId, Int_t manuId) const
{
if ( manuId <= 0 ) return kTRUE;
Int_t n(0);
for ( Int_t i = 0; i < AliMpConstants::ManuNofChannels(); ++i)
{
if ( IsChannelDead(detElemId,manuId,i) ) ++n;
}
return n > 16;
}
Bool_t AliMUONQAMappingCheck::IsChannelDead(Int_t detElemId, Int_t manuId, Int_t manuChannel) const
{
return ( fDigitCalibrator->StatusMap(detElemId,manuId,manuChannel) & (AliMUONPadStatusMapMaker::SelfDeadMask() != 0) );
}
void
AliMUONQAMappingCheck::Store(AliMUONVCluster& cluster)
{
if ( cluster.GetCharge() < 10 ) return;
Int_t manuBendingId, manuBendingChannel;
Int_t manuNonBendingId, manuNonBendingChannel;
Bool_t monoCathode, legitimateMonoCathode;
GetClusterLocation(cluster, manuBendingId, manuBendingChannel,manuNonBendingId, manuNonBendingChannel, monoCathode,legitimateMonoCathode);
AddClusterLocation(cluster.GetDetElemId(),manuBendingId,manuBendingChannel,monoCathode,legitimateMonoCathode);
AddClusterLocation(cluster.GetDetElemId(),manuNonBendingId,manuNonBendingChannel,monoCathode,legitimateMonoCathode);
}
AliMUONQAMappingCheck.cxx:1 AliMUONQAMappingCheck.cxx:2 AliMUONQAMappingCheck.cxx:3 AliMUONQAMappingCheck.cxx:4 AliMUONQAMappingCheck.cxx:5 AliMUONQAMappingCheck.cxx:6 AliMUONQAMappingCheck.cxx:7 AliMUONQAMappingCheck.cxx:8 AliMUONQAMappingCheck.cxx:9 AliMUONQAMappingCheck.cxx:10 AliMUONQAMappingCheck.cxx:11 AliMUONQAMappingCheck.cxx:12 AliMUONQAMappingCheck.cxx:13 AliMUONQAMappingCheck.cxx:14 AliMUONQAMappingCheck.cxx:15 AliMUONQAMappingCheck.cxx:16 AliMUONQAMappingCheck.cxx:17 AliMUONQAMappingCheck.cxx:18 AliMUONQAMappingCheck.cxx:19 AliMUONQAMappingCheck.cxx:20 AliMUONQAMappingCheck.cxx:21 AliMUONQAMappingCheck.cxx:22 AliMUONQAMappingCheck.cxx:23 AliMUONQAMappingCheck.cxx:24 AliMUONQAMappingCheck.cxx:25 AliMUONQAMappingCheck.cxx:26 AliMUONQAMappingCheck.cxx:27 AliMUONQAMappingCheck.cxx:28 AliMUONQAMappingCheck.cxx:29 AliMUONQAMappingCheck.cxx:30 AliMUONQAMappingCheck.cxx:31 AliMUONQAMappingCheck.cxx:32 AliMUONQAMappingCheck.cxx:33 AliMUONQAMappingCheck.cxx:34 AliMUONQAMappingCheck.cxx:35 AliMUONQAMappingCheck.cxx:36 AliMUONQAMappingCheck.cxx:37 AliMUONQAMappingCheck.cxx:38 AliMUONQAMappingCheck.cxx:39 AliMUONQAMappingCheck.cxx:40 AliMUONQAMappingCheck.cxx:41 AliMUONQAMappingCheck.cxx:42 AliMUONQAMappingCheck.cxx:43 AliMUONQAMappingCheck.cxx:44 AliMUONQAMappingCheck.cxx:45 AliMUONQAMappingCheck.cxx:46 AliMUONQAMappingCheck.cxx:47 AliMUONQAMappingCheck.cxx:48 AliMUONQAMappingCheck.cxx:49 AliMUONQAMappingCheck.cxx:50 AliMUONQAMappingCheck.cxx:51 AliMUONQAMappingCheck.cxx:52 AliMUONQAMappingCheck.cxx:53 AliMUONQAMappingCheck.cxx:54 AliMUONQAMappingCheck.cxx:55 AliMUONQAMappingCheck.cxx:56 AliMUONQAMappingCheck.cxx:57 AliMUONQAMappingCheck.cxx:58 AliMUONQAMappingCheck.cxx:59 AliMUONQAMappingCheck.cxx:60 AliMUONQAMappingCheck.cxx:61 AliMUONQAMappingCheck.cxx:62 AliMUONQAMappingCheck.cxx:63 AliMUONQAMappingCheck.cxx:64 AliMUONQAMappingCheck.cxx:65 AliMUONQAMappingCheck.cxx:66 AliMUONQAMappingCheck.cxx:67 AliMUONQAMappingCheck.cxx:68 AliMUONQAMappingCheck.cxx:69 AliMUONQAMappingCheck.cxx:70 AliMUONQAMappingCheck.cxx:71 AliMUONQAMappingCheck.cxx:72 AliMUONQAMappingCheck.cxx:73 AliMUONQAMappingCheck.cxx:74 AliMUONQAMappingCheck.cxx:75 AliMUONQAMappingCheck.cxx:76 AliMUONQAMappingCheck.cxx:77 AliMUONQAMappingCheck.cxx:78 AliMUONQAMappingCheck.cxx:79 AliMUONQAMappingCheck.cxx:80 AliMUONQAMappingCheck.cxx:81 AliMUONQAMappingCheck.cxx:82 AliMUONQAMappingCheck.cxx:83 AliMUONQAMappingCheck.cxx:84 AliMUONQAMappingCheck.cxx:85 AliMUONQAMappingCheck.cxx:86 AliMUONQAMappingCheck.cxx:87 AliMUONQAMappingCheck.cxx:88 AliMUONQAMappingCheck.cxx:89 AliMUONQAMappingCheck.cxx:90 AliMUONQAMappingCheck.cxx:91 AliMUONQAMappingCheck.cxx:92 AliMUONQAMappingCheck.cxx:93 AliMUONQAMappingCheck.cxx:94 AliMUONQAMappingCheck.cxx:95 AliMUONQAMappingCheck.cxx:96 AliMUONQAMappingCheck.cxx:97 AliMUONQAMappingCheck.cxx:98 AliMUONQAMappingCheck.cxx:99 AliMUONQAMappingCheck.cxx:100 AliMUONQAMappingCheck.cxx:101 AliMUONQAMappingCheck.cxx:102 AliMUONQAMappingCheck.cxx:103 AliMUONQAMappingCheck.cxx:104 AliMUONQAMappingCheck.cxx:105 AliMUONQAMappingCheck.cxx:106 AliMUONQAMappingCheck.cxx:107 AliMUONQAMappingCheck.cxx:108 AliMUONQAMappingCheck.cxx:109 AliMUONQAMappingCheck.cxx:110 AliMUONQAMappingCheck.cxx:111 AliMUONQAMappingCheck.cxx:112 AliMUONQAMappingCheck.cxx:113 AliMUONQAMappingCheck.cxx:114 AliMUONQAMappingCheck.cxx:115 AliMUONQAMappingCheck.cxx:116 AliMUONQAMappingCheck.cxx:117 AliMUONQAMappingCheck.cxx:118 AliMUONQAMappingCheck.cxx:119 AliMUONQAMappingCheck.cxx:120 AliMUONQAMappingCheck.cxx:121 AliMUONQAMappingCheck.cxx:122 AliMUONQAMappingCheck.cxx:123 AliMUONQAMappingCheck.cxx:124 AliMUONQAMappingCheck.cxx:125 AliMUONQAMappingCheck.cxx:126 AliMUONQAMappingCheck.cxx:127 AliMUONQAMappingCheck.cxx:128 AliMUONQAMappingCheck.cxx:129 AliMUONQAMappingCheck.cxx:130 AliMUONQAMappingCheck.cxx:131 AliMUONQAMappingCheck.cxx:132 AliMUONQAMappingCheck.cxx:133 AliMUONQAMappingCheck.cxx:134 AliMUONQAMappingCheck.cxx:135 AliMUONQAMappingCheck.cxx:136 AliMUONQAMappingCheck.cxx:137 AliMUONQAMappingCheck.cxx:138 AliMUONQAMappingCheck.cxx:139 AliMUONQAMappingCheck.cxx:140 AliMUONQAMappingCheck.cxx:141 AliMUONQAMappingCheck.cxx:142 AliMUONQAMappingCheck.cxx:143 AliMUONQAMappingCheck.cxx:144 AliMUONQAMappingCheck.cxx:145 AliMUONQAMappingCheck.cxx:146 AliMUONQAMappingCheck.cxx:147 AliMUONQAMappingCheck.cxx:148 AliMUONQAMappingCheck.cxx:149 AliMUONQAMappingCheck.cxx:150 AliMUONQAMappingCheck.cxx:151 AliMUONQAMappingCheck.cxx:152 AliMUONQAMappingCheck.cxx:153 AliMUONQAMappingCheck.cxx:154 AliMUONQAMappingCheck.cxx:155 AliMUONQAMappingCheck.cxx:156 AliMUONQAMappingCheck.cxx:157 AliMUONQAMappingCheck.cxx:158 AliMUONQAMappingCheck.cxx:159 AliMUONQAMappingCheck.cxx:160 AliMUONQAMappingCheck.cxx:161 AliMUONQAMappingCheck.cxx:162 AliMUONQAMappingCheck.cxx:163 AliMUONQAMappingCheck.cxx:164 AliMUONQAMappingCheck.cxx:165 AliMUONQAMappingCheck.cxx:166 AliMUONQAMappingCheck.cxx:167 AliMUONQAMappingCheck.cxx:168 AliMUONQAMappingCheck.cxx:169 AliMUONQAMappingCheck.cxx:170 AliMUONQAMappingCheck.cxx:171 AliMUONQAMappingCheck.cxx:172 AliMUONQAMappingCheck.cxx:173 AliMUONQAMappingCheck.cxx:174 AliMUONQAMappingCheck.cxx:175 AliMUONQAMappingCheck.cxx:176 AliMUONQAMappingCheck.cxx:177 AliMUONQAMappingCheck.cxx:178 AliMUONQAMappingCheck.cxx:179 AliMUONQAMappingCheck.cxx:180 AliMUONQAMappingCheck.cxx:181 AliMUONQAMappingCheck.cxx:182 AliMUONQAMappingCheck.cxx:183 AliMUONQAMappingCheck.cxx:184 AliMUONQAMappingCheck.cxx:185 AliMUONQAMappingCheck.cxx:186 AliMUONQAMappingCheck.cxx:187 AliMUONQAMappingCheck.cxx:188 AliMUONQAMappingCheck.cxx:189 AliMUONQAMappingCheck.cxx:190 AliMUONQAMappingCheck.cxx:191 AliMUONQAMappingCheck.cxx:192 AliMUONQAMappingCheck.cxx:193 AliMUONQAMappingCheck.cxx:194 AliMUONQAMappingCheck.cxx:195 AliMUONQAMappingCheck.cxx:196 AliMUONQAMappingCheck.cxx:197 AliMUONQAMappingCheck.cxx:198 AliMUONQAMappingCheck.cxx:199 AliMUONQAMappingCheck.cxx:200 AliMUONQAMappingCheck.cxx:201 AliMUONQAMappingCheck.cxx:202 AliMUONQAMappingCheck.cxx:203 AliMUONQAMappingCheck.cxx:204 AliMUONQAMappingCheck.cxx:205 AliMUONQAMappingCheck.cxx:206 AliMUONQAMappingCheck.cxx:207 AliMUONQAMappingCheck.cxx:208 AliMUONQAMappingCheck.cxx:209 AliMUONQAMappingCheck.cxx:210 AliMUONQAMappingCheck.cxx:211 AliMUONQAMappingCheck.cxx:212 AliMUONQAMappingCheck.cxx:213 AliMUONQAMappingCheck.cxx:214 AliMUONQAMappingCheck.cxx:215 AliMUONQAMappingCheck.cxx:216 AliMUONQAMappingCheck.cxx:217 AliMUONQAMappingCheck.cxx:218 AliMUONQAMappingCheck.cxx:219 AliMUONQAMappingCheck.cxx:220 AliMUONQAMappingCheck.cxx:221 AliMUONQAMappingCheck.cxx:222 AliMUONQAMappingCheck.cxx:223 AliMUONQAMappingCheck.cxx:224 AliMUONQAMappingCheck.cxx:225 AliMUONQAMappingCheck.cxx:226 AliMUONQAMappingCheck.cxx:227 AliMUONQAMappingCheck.cxx:228 AliMUONQAMappingCheck.cxx:229 AliMUONQAMappingCheck.cxx:230 AliMUONQAMappingCheck.cxx:231 AliMUONQAMappingCheck.cxx:232 AliMUONQAMappingCheck.cxx:233 AliMUONQAMappingCheck.cxx:234 AliMUONQAMappingCheck.cxx:235 AliMUONQAMappingCheck.cxx:236 AliMUONQAMappingCheck.cxx:237 AliMUONQAMappingCheck.cxx:238 AliMUONQAMappingCheck.cxx:239 AliMUONQAMappingCheck.cxx:240 AliMUONQAMappingCheck.cxx:241 AliMUONQAMappingCheck.cxx:242 AliMUONQAMappingCheck.cxx:243 AliMUONQAMappingCheck.cxx:244 AliMUONQAMappingCheck.cxx:245 AliMUONQAMappingCheck.cxx:246 AliMUONQAMappingCheck.cxx:247 AliMUONQAMappingCheck.cxx:248 AliMUONQAMappingCheck.cxx:249 AliMUONQAMappingCheck.cxx:250 AliMUONQAMappingCheck.cxx:251 AliMUONQAMappingCheck.cxx:252 AliMUONQAMappingCheck.cxx:253 AliMUONQAMappingCheck.cxx:254 AliMUONQAMappingCheck.cxx:255 AliMUONQAMappingCheck.cxx:256 AliMUONQAMappingCheck.cxx:257 AliMUONQAMappingCheck.cxx:258 AliMUONQAMappingCheck.cxx:259 AliMUONQAMappingCheck.cxx:260 AliMUONQAMappingCheck.cxx:261 AliMUONQAMappingCheck.cxx:262 AliMUONQAMappingCheck.cxx:263 AliMUONQAMappingCheck.cxx:264 AliMUONQAMappingCheck.cxx:265 AliMUONQAMappingCheck.cxx:266 AliMUONQAMappingCheck.cxx:267 AliMUONQAMappingCheck.cxx:268 AliMUONQAMappingCheck.cxx:269 AliMUONQAMappingCheck.cxx:270 AliMUONQAMappingCheck.cxx:271 AliMUONQAMappingCheck.cxx:272 AliMUONQAMappingCheck.cxx:273 AliMUONQAMappingCheck.cxx:274 AliMUONQAMappingCheck.cxx:275 AliMUONQAMappingCheck.cxx:276 AliMUONQAMappingCheck.cxx:277 AliMUONQAMappingCheck.cxx:278 AliMUONQAMappingCheck.cxx:279 AliMUONQAMappingCheck.cxx:280 AliMUONQAMappingCheck.cxx:281 AliMUONQAMappingCheck.cxx:282 AliMUONQAMappingCheck.cxx:283 AliMUONQAMappingCheck.cxx:284 AliMUONQAMappingCheck.cxx:285 AliMUONQAMappingCheck.cxx:286 AliMUONQAMappingCheck.cxx:287 AliMUONQAMappingCheck.cxx:288 AliMUONQAMappingCheck.cxx:289 AliMUONQAMappingCheck.cxx:290 AliMUONQAMappingCheck.cxx:291