LCOV - code coverage report
Current view: top level - VZERO/VZERObase - AliVZEROMisAligner.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 37 2.7 %
Date: 2016-06-14 17:26:59 Functions: 1 5 20.0 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 2007-2010, 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             : //========================================================================
      17             : //
      18             : // This class generates misalignment for VZERO. In particular it defines
      19             : // the misalignment in the three canonical scenarios: "ideal", "residual"
      20             : // and "full".
      21             : // It is meant to be run standalone or from the steering macro
      22             : // $ALICE_ROOT/macros/MakeAlignmentObjs.C
      23             : // looping on the detectors.
      24             : //
      25             : //========================================================================
      26             : 
      27             : #include "AliVZEROMisAligner.h"
      28             : #include "AliGeomManager.h"
      29             : #include "AliMathBase.h"
      30             : #include "TClonesArray.h"
      31             : #include "TRandom.h"
      32             : #include "AliAlignObjParams.h"
      33             : #include "AliLog.h"
      34             : 
      35          44 : ClassImp(AliVZEROMisAligner)
      36             : 
      37             :     //_______________________________________________________________________________________
      38           0 : AliVZEROMisAligner::AliVZEROMisAligner() : AliMisAligner()
      39           0 : {
      40             :     //
      41             :     // dummy constructor
      42             :     //
      43           0 : }
      44             : 
      45             : //_______________________________________________________________________________________
      46             : TClonesArray* AliVZEROMisAligner::MakeAlObjsArray() {
      47             :     // builds and returns the array of alignment objects
      48             :     // according to the spcified misalignment scenario
      49             :     // ("ideal", "residual" or "full").
      50             :     //
      51           0 :     TClonesArray *array = new TClonesArray("AliAlignObjParams",2);
      52             :     TClonesArray &alobj = *array;
      53             : 
      54             :     Double_t dx, dy, dz, dpsi, dtheta, dphi;
      55           0 :     gRandom->SetSeed(4321);
      56             :     Double_t sigmatr; // max shift in cm
      57             :     Double_t sigmarot; // max rot in degrees
      58             : 
      59           0 :     TString v0alignable[2]={"VZERO/V0C", "VZERO/V0A"};
      60             : 
      61             :     Int_t iIndex=0; // VZERO is not indexed
      62             :     AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
      63           0 :     UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex);
      64             : 
      65           0 :     if(TString(GetMisalType())=="ideal")
      66             :     {
      67             : 
      68           0 :         for(Int_t ii=0; ii<2; ii++)
      69           0 :             new(alobj[ii]) AliAlignObjParams(v0alignable[ii].Data(), volid, 0., 0., 0., 0., 0., 0., kTRUE);
      70             : 
      71           0 :     }else if(TString(GetMisalType())=="residual" || TString(GetMisalType())=="full"){
      72             : 
      73           0 :         if(!AliGeomManager::GetGeometry())
      74             :         {
      75           0 :             AliError("No geometry loaded into AliGeomManager! Returning null pointer!");
      76           0 :             return 0;
      77             :         }
      78             : 
      79             :         sigmatr = 0.1;
      80             :         sigmarot = 0.5;
      81             : 
      82           0 :         for(Int_t ii=0; ii<2; ii++)
      83             :         {
      84           0 :             dx = AliMathBase::TruncatedGaus(0.,sigmatr, 3*sigmatr);
      85           0 :             dy = AliMathBase::TruncatedGaus(0.,sigmatr, 3*sigmatr);
      86           0 :             dz = AliMathBase::TruncatedGaus(0.,sigmatr, 3*sigmatr);
      87           0 :             dpsi   = AliMathBase::TruncatedGaus(0.,sigmarot, 3*sigmarot);
      88           0 :             dtheta = AliMathBase::TruncatedGaus(0.,sigmarot, 3*sigmarot);
      89           0 :             dphi   = AliMathBase::TruncatedGaus(0.,sigmarot, 3*sigmarot);
      90           0 :             new(alobj[ii]) AliAlignObjParams(v0alignable[ii].Data(), volid, dx, dy, dz, dpsi, dtheta, dphi, kFALSE);
      91             :         }
      92             : 
      93             :     }else{
      94           0 :         AliError(Form("\"%s\" is not a valid identifier for misalignment types. Exiting ...",GetMisalType()));
      95           0 :         return 0;
      96             :     }
      97             : 
      98           0 :     return array;
      99           0 : }
     100             : 
     101             : //_______________________________________________________________________________________
     102             : AliCDBMetaData* AliVZEROMisAligner::GetCDBMetaData() const {
     103             :     // Returns the comment and responsible for the
     104             :     // AliCDBMetaData to be associated with the OCDB entry
     105             :     // containing the VZERO array of misalignment objects
     106             :     //
     107           0 :     AliCDBMetaData* md = new AliCDBMetaData();
     108           0 :     md->SetResponsible("Brigitte Cheynis");
     109             : 
     110           0 :     if(TString(GetMisalType())=="ideal")
     111           0 :         md->SetComment("Alignment objects for VZERO ideal misalignment");
     112           0 :     if(TString(GetMisalType())=="residual")
     113           0 :         md->SetComment("Alignment objects for VZERO residual misalignment");
     114           0 :     if(TString(GetMisalType())=="full")
     115           0 :         md->SetComment("Alignment objects for VZERO full misalignment");
     116             : 
     117           0 :     return md;
     118           0 : }

Generated by: LCOV version 1.11