#include <TMath.h>
#include <TRandom3.h>
#include <TObjArray.h>
#include <AliVTrack.h>
#include "AliDielectronHelper.h"
#include "AliDielectronTrackRotator.h"
ClassImp(AliDielectronTrackRotator)
AliDielectronTrackRotator::AliDielectronTrackRotator() :
TNamed(),
fIterations(1),
fRotationType(kRotateBothRandom),
fStartAnglePhi(TMath::Pi()),
fConeAnglePhi(TMath::Pi()/6.),
fkArrTracksP(0x0),
fkArrTracksN(0x0),
fCurrentIteration(0),
fCurrentTackP(0),
fCurrentTackN(0),
fEvent(0x0),
fTrackP(),
fTrackN(),
fVTrackP(0x0),
fVTrackN(0x0),
fPdgLeg1(-11),
fPdgLeg2(11)
{
gRandom->SetSeed();
}
AliDielectronTrackRotator::AliDielectronTrackRotator(const char* name, const char* title) :
TNamed(name, title),
fIterations(1),
fRotationType(kRotateBothRandom),
fStartAnglePhi(TMath::Pi()),
fConeAnglePhi(TMath::Pi()/6.),
fkArrTracksP(0x0),
fkArrTracksN(0x0),
fCurrentIteration(0),
fCurrentTackP(0),
fCurrentTackN(0),
fEvent(0x0),
fTrackP(),
fTrackN(),
fVTrackP(0x0),
fVTrackN(0x0),
fPdgLeg1(-11),
fPdgLeg2(11)
{
gRandom->SetSeed();
}
AliDielectronTrackRotator::~AliDielectronTrackRotator()
{
}
void AliDielectronTrackRotator::Reset()
{
fCurrentIteration=0;
fCurrentTackP=0;
fCurrentTackN=0;
}
Bool_t AliDielectronTrackRotator::NextCombination()
{
if (!fkArrTracksP || !fkArrTracksP) {
Reset();
return kFALSE;
}
Int_t nP=fkArrTracksP->GetEntriesFast();
Int_t nN=fkArrTracksN->GetEntriesFast();
if (nP==0||nN==0){
Reset();
return kFALSE;
}
if (fCurrentIteration==fIterations){
fCurrentIteration=0;
++fCurrentTackP;
}
if (fCurrentTackP==nP){
++fCurrentTackN;
fCurrentTackP=0;
}
if (fCurrentTackN==nN){
Reset();
return kFALSE;
}
if (!RotateTracks()){
Reset();
return kFALSE;
}
++fCurrentIteration;
return kTRUE;
}
Bool_t AliDielectronTrackRotator::RotateTracks()
{
AliVTrack *trackP=dynamic_cast<AliVTrack*>(fkArrTracksP->UncheckedAt(fCurrentTackP));
AliVTrack *trackN=dynamic_cast<AliVTrack*>(fkArrTracksN->UncheckedAt(fCurrentTackN));
fTrackP.Initialize();
fTrackN.Initialize();
fVTrackP=0x0;
fVTrackN=0x0;
if (!trackP||!trackN) return kFALSE;
fTrackP+=AliKFParticle(*trackP,fPdgLeg1);
fTrackN+=AliKFParticle(*trackN,fPdgLeg2);
fVTrackP=trackP;
fVTrackN=trackN;
Double_t angle = fStartAnglePhi+(2*gRandom->Rndm()-1)*fConeAnglePhi;
Int_t charge = TMath::Nint(gRandom->Rndm());
if (fRotationType==kRotatePositive||(fRotationType==kRotateBothRandom&&charge==0)){
AliDielectronHelper::RotateKFParticle(&fTrackP, angle, fEvent);
}
if (fRotationType==kRotateNegative||(fRotationType==kRotateBothRandom&&charge==1)){
AliDielectronHelper::RotateKFParticle(&fTrackN, angle, fEvent);
}
return kTRUE;
}
AliDielectronTrackRotator.cxx:1 AliDielectronTrackRotator.cxx:2 AliDielectronTrackRotator.cxx:3 AliDielectronTrackRotator.cxx:4 AliDielectronTrackRotator.cxx:5 AliDielectronTrackRotator.cxx:6 AliDielectronTrackRotator.cxx:7 AliDielectronTrackRotator.cxx:8 AliDielectronTrackRotator.cxx:9 AliDielectronTrackRotator.cxx:10 AliDielectronTrackRotator.cxx:11 AliDielectronTrackRotator.cxx:12 AliDielectronTrackRotator.cxx:13 AliDielectronTrackRotator.cxx:14 AliDielectronTrackRotator.cxx:15 AliDielectronTrackRotator.cxx:16 AliDielectronTrackRotator.cxx:17 AliDielectronTrackRotator.cxx:18 AliDielectronTrackRotator.cxx:19 AliDielectronTrackRotator.cxx:20 AliDielectronTrackRotator.cxx:21 AliDielectronTrackRotator.cxx:22 AliDielectronTrackRotator.cxx:23 AliDielectronTrackRotator.cxx:24 AliDielectronTrackRotator.cxx:25 AliDielectronTrackRotator.cxx:26 AliDielectronTrackRotator.cxx:27 AliDielectronTrackRotator.cxx:28 AliDielectronTrackRotator.cxx:29 AliDielectronTrackRotator.cxx:30 AliDielectronTrackRotator.cxx:31 AliDielectronTrackRotator.cxx:32 AliDielectronTrackRotator.cxx:33 AliDielectronTrackRotator.cxx:34 AliDielectronTrackRotator.cxx:35 AliDielectronTrackRotator.cxx:36 AliDielectronTrackRotator.cxx:37 AliDielectronTrackRotator.cxx:38 AliDielectronTrackRotator.cxx:39 AliDielectronTrackRotator.cxx:40 AliDielectronTrackRotator.cxx:41 AliDielectronTrackRotator.cxx:42 AliDielectronTrackRotator.cxx:43 AliDielectronTrackRotator.cxx:44 AliDielectronTrackRotator.cxx:45 AliDielectronTrackRotator.cxx:46 AliDielectronTrackRotator.cxx:47 AliDielectronTrackRotator.cxx:48 AliDielectronTrackRotator.cxx:49 AliDielectronTrackRotator.cxx:50 AliDielectronTrackRotator.cxx:51 AliDielectronTrackRotator.cxx:52 AliDielectronTrackRotator.cxx:53 AliDielectronTrackRotator.cxx:54 AliDielectronTrackRotator.cxx:55 AliDielectronTrackRotator.cxx:56 AliDielectronTrackRotator.cxx:57 AliDielectronTrackRotator.cxx:58 AliDielectronTrackRotator.cxx:59 AliDielectronTrackRotator.cxx:60 AliDielectronTrackRotator.cxx:61 AliDielectronTrackRotator.cxx:62 AliDielectronTrackRotator.cxx:63 AliDielectronTrackRotator.cxx:64 AliDielectronTrackRotator.cxx:65 AliDielectronTrackRotator.cxx:66 AliDielectronTrackRotator.cxx:67 AliDielectronTrackRotator.cxx:68 AliDielectronTrackRotator.cxx:69 AliDielectronTrackRotator.cxx:70 AliDielectronTrackRotator.cxx:71 AliDielectronTrackRotator.cxx:72 AliDielectronTrackRotator.cxx:73 AliDielectronTrackRotator.cxx:74 AliDielectronTrackRotator.cxx:75 AliDielectronTrackRotator.cxx:76 AliDielectronTrackRotator.cxx:77 AliDielectronTrackRotator.cxx:78 AliDielectronTrackRotator.cxx:79 AliDielectronTrackRotator.cxx:80 AliDielectronTrackRotator.cxx:81 AliDielectronTrackRotator.cxx:82 AliDielectronTrackRotator.cxx:83 AliDielectronTrackRotator.cxx:84 AliDielectronTrackRotator.cxx:85 AliDielectronTrackRotator.cxx:86 AliDielectronTrackRotator.cxx:87 AliDielectronTrackRotator.cxx:88 AliDielectronTrackRotator.cxx:89 AliDielectronTrackRotator.cxx:90 AliDielectronTrackRotator.cxx:91 AliDielectronTrackRotator.cxx:92 AliDielectronTrackRotator.cxx:93 AliDielectronTrackRotator.cxx:94 AliDielectronTrackRotator.cxx:95 AliDielectronTrackRotator.cxx:96 AliDielectronTrackRotator.cxx:97 AliDielectronTrackRotator.cxx:98 AliDielectronTrackRotator.cxx:99 AliDielectronTrackRotator.cxx:100 AliDielectronTrackRotator.cxx:101 AliDielectronTrackRotator.cxx:102 AliDielectronTrackRotator.cxx:103 AliDielectronTrackRotator.cxx:104 AliDielectronTrackRotator.cxx:105 AliDielectronTrackRotator.cxx:106 AliDielectronTrackRotator.cxx:107 AliDielectronTrackRotator.cxx:108 AliDielectronTrackRotator.cxx:109 AliDielectronTrackRotator.cxx:110 AliDielectronTrackRotator.cxx:111 AliDielectronTrackRotator.cxx:112 AliDielectronTrackRotator.cxx:113 AliDielectronTrackRotator.cxx:114 AliDielectronTrackRotator.cxx:115 AliDielectronTrackRotator.cxx:116 AliDielectronTrackRotator.cxx:117 AliDielectronTrackRotator.cxx:118 AliDielectronTrackRotator.cxx:119 AliDielectronTrackRotator.cxx:120 AliDielectronTrackRotator.cxx:121 AliDielectronTrackRotator.cxx:122 AliDielectronTrackRotator.cxx:123 AliDielectronTrackRotator.cxx:124 AliDielectronTrackRotator.cxx:125 AliDielectronTrackRotator.cxx:126 AliDielectronTrackRotator.cxx:127 AliDielectronTrackRotator.cxx:128 AliDielectronTrackRotator.cxx:129 AliDielectronTrackRotator.cxx:130 AliDielectronTrackRotator.cxx:131 AliDielectronTrackRotator.cxx:132 AliDielectronTrackRotator.cxx:133 AliDielectronTrackRotator.cxx:134 AliDielectronTrackRotator.cxx:135 AliDielectronTrackRotator.cxx:136 AliDielectronTrackRotator.cxx:137 AliDielectronTrackRotator.cxx:138 AliDielectronTrackRotator.cxx:139 AliDielectronTrackRotator.cxx:140 AliDielectronTrackRotator.cxx:141 AliDielectronTrackRotator.cxx:142 AliDielectronTrackRotator.cxx:143 AliDielectronTrackRotator.cxx:144 AliDielectronTrackRotator.cxx:145 AliDielectronTrackRotator.cxx:146 AliDielectronTrackRotator.cxx:147 AliDielectronTrackRotator.cxx:148 AliDielectronTrackRotator.cxx:149 AliDielectronTrackRotator.cxx:150 AliDielectronTrackRotator.cxx:151 AliDielectronTrackRotator.cxx:152 AliDielectronTrackRotator.cxx:153 AliDielectronTrackRotator.cxx:154 AliDielectronTrackRotator.cxx:155 AliDielectronTrackRotator.cxx:156 AliDielectronTrackRotator.cxx:157 AliDielectronTrackRotator.cxx:158 AliDielectronTrackRotator.cxx:159 AliDielectronTrackRotator.cxx:160 AliDielectronTrackRotator.cxx:161 AliDielectronTrackRotator.cxx:162 AliDielectronTrackRotator.cxx:163 AliDielectronTrackRotator.cxx:164 AliDielectronTrackRotator.cxx:165 AliDielectronTrackRotator.cxx:166 AliDielectronTrackRotator.cxx:167 AliDielectronTrackRotator.cxx:168 AliDielectronTrackRotator.cxx:169 AliDielectronTrackRotator.cxx:170 AliDielectronTrackRotator.cxx:171 AliDielectronTrackRotator.cxx:172 AliDielectronTrackRotator.cxx:173 AliDielectronTrackRotator.cxx:174 AliDielectronTrackRotator.cxx:175 AliDielectronTrackRotator.cxx:176 AliDielectronTrackRotator.cxx:177 AliDielectronTrackRotator.cxx:178 AliDielectronTrackRotator.cxx:179 AliDielectronTrackRotator.cxx:180 AliDielectronTrackRotator.cxx:181 AliDielectronTrackRotator.cxx:182 AliDielectronTrackRotator.cxx:183 AliDielectronTrackRotator.cxx:184 AliDielectronTrackRotator.cxx:185 AliDielectronTrackRotator.cxx:186