好的,我的任务是使用一种方法 (IU) 比较这个光子列表并将其与另一种方法 (TSP) 进行比较。我需要获取第一个 IU 光子并与所有TSP 光子比较距离,找到最小距离,然后将它们“配对”(即,将它们设置在具有相同索引的数组中)。然后,我需要获取 IU 列表中的下一个光子,并将其与所有 TSP 光子进行比较,减去已经选择的那个。我知道我需要使用各种布尔数组,并保留一个计数器。我似乎无法完全将其逻辑化。
下面的代码不是标准的 C++ 语法,因为它是为与 ROOT(CERN 数据分析软件)交互而编写的。如果您对语法有任何疑问以更好地理解代码,请询问。我会很高兴地回答。
我已经声明了数组和变量。您看到的类型称为 EEmcParticleCandidate,它是一种从信息树中读取的类型,我有一整套类和标头来告诉它如何表现。
谢谢。
Bool_t used[2];
if (num[0]==2 && num[1]==2) {
TIter photonIterIU(mPhotonArray[0]);
while(IU_photon=(EEmcParticleCandidate_t*)photonIterIU.Next()){
if (IU_photon->E > thresh2) {
distMin=1000.0;
index = 0;
IU_PhotonArray[index] = IU_photon;
TIter photonIterTSP(mPhotonArray[1]);
while(TSP_photon=(EEmcParticleCandidate_t*)photonIterTSP.Next()) {
if (TSP_photon->E > thresh2) {
Float_t Xpos_IU = IU_photon->position.fX;
Float_t Ypos_IU = IU_photon->position.fY;
Float_t Xpos_TSP = TSP_photon->position.fX;
Float_t Ypos_TSP = TSP_photon->position.fY;
distance_1 = find distance //formula didnt fit here //
if (distance_1 < distMin){
distMin = distance_1;;
for (Int_t i=0;i<2;i++){
used[i] = false;
} //for
used[index] = true;
TSP_PhotonArray[index] = TSP_photon;
index++;
} //if
} //if thresh
} // while TSP
} //if thresh
} // while IU
这就是我目前所拥有的一切......正在进行中,我意识到所有的牙套都没有闭合。这只是一个简单的逻辑问题。